用Java抓取10年大樂透中獎資料
阿新 • • 發佈:2019-01-27
最近突發奇想,想用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檔案中。