用Java抓取10年大乐透中奖数据

最近突发奇想,想用java拉去最近十年的大乐透中奖数据,然后使用机器学习预测下一期的开奖结果,看看能不能瞬间财务自由,第一步:拉取最近十年的大乐透中奖数据。

首先找个能查询大乐透开奖数据的网站:

https://www.cjcp.com.cn

找到大乐透开奖数据部分:

https://daletou.cjcp.com.cn/kaijiang/

按F12查看网络请求信息:
用Java抓取10年大乐透中奖数据_第1张图片

点开第一个请求:
用Java抓取10年大乐透中奖数据_第2张图片

明显看出URL中的地址,最后一个请求的参数为开奖的期数:

大乐透基本知识:2018074 为2018年第74期开奖结果。 大乐透每年最少113期。

浏览器键入该URL:

https://www.cjcp.com.cn/ajax_kj.php?jsoncallback=jsonp1532326738107&dlt_qs=2018074

结果:
这里写图片描述

可以看出结果中的红色部分为开奖结果:
用Java抓取10年大乐透中奖数据_第3张图片

最后获取十年开奖结果的程序如下:

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文件中。

你可能感兴趣的:(其他)