1. 程式人生 > >用Java抓取10年大樂透中獎資料

用Java抓取10年大樂透中獎資料

最近突發奇想,想用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檔案中。