最近突发奇想,想用java拉去最近十年的大乐透中奖数据,然后使用机器学习预测下一期的开奖结果,看看能不能瞬间财务自由,第一步:拉取最近十年的大乐透中奖数据。
首先找个能查询大乐透开奖数据的网站:
https://www.cjcp.com.cn
找到大乐透开奖数据部分:
https://daletou.cjcp.com.cn/kaijiang/
按F12查看网络请求信息:
点开第一个请求:
明显看出URL中的地址,最后一个请求的参数为开奖的期数:
大乐透基本知识:2018074 为2018年第74期开奖结果。 大乐透每年最少113期。
浏览器键入该URL:
https://www.cjcp.com.cn/ajax_kj.php?jsoncallback=jsonp1532326738107&dlt_qs=2018074
结果:
可以看出结果中的红色部分为开奖结果:
最后获取十年开奖结果的程序如下:
import com.tam.util.HttpUtil;
import org.apache.commons.lang.StringUtils;
import java.io.File;
import java.io.FileOutputStream;
public class Lottery {
public static void main(String[] args){
HttpUtil util = new HttpUtil();
File file = new File("E:\\data.txt");
try{
FileOutputStream out = new FileOutputStream(file);
for(int i = 2007; i < 2019; i++){
for(int j = 1; j < 114; j++){
String str = "";
if(j<10){
str = String.valueOf(i)+"00"+String.valueOf(j);
}else if(j>=10&& j<100){
str = String.valueOf(i)+"0"+String.valueOf(j);
}else{
str = String.valueOf(i)+String.valueOf(j);
}
String result = util.post("https://www.cjcp.com.cn/ajax_kj.php?jsoncallback=jsonp16318292&dlt_qs="+str);
String[] tempStr = null;
if(!StringUtils.isEmpty(result)){
tempStr = result.split("\\*");
}
System.out.println("result:"+result);
if(tempStr != null && tempStr.length > 10){
String data = str+","+tempStr[4]+","+tempStr[5]+","+tempStr[6]+","+tempStr[7]+","+tempStr[8]+","+tempStr[9]+","+tempStr[10]+"\n";
out.write(data.getBytes());
}
}
}
}catch (Exception e){
System.out.println("异常:"+e);
}
}
}
HttpUtil可以上网自己找一个,能发送Post请求就可以。最后十年的大乐透中奖数据存贮在D盘的data.txt文件中。