自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用Python抓取分析十年彩票中獎結果

開發(fā) 后端
在爬取一些簡單的(沒有反爬機制的)靜態(tài)網頁時,一般采取的策略是:選中目標(所謂的url鏈接),觀察結構(鏈接結構,網頁結構),構思動手(選用什么HTML下載器,解析器等)。

前兩天,在網上看到一個有意思的問題:彩票預測靠譜么?為什么還有那么多的人相信彩票預測?

暫且不說,彩票預測是否靠譜?彩票預測也分人而異,江湖上騙術很多,有些甚至會誤以為彩票預測的準確度可以很高,這些操盤手法,讓不知原理的彩民心甘情愿地掏錢買料。

在彩票預測上,也有正兒八經去研究“規(guī)律” 的,不外乎三個“派別”:數據派、圖形派、公式派。還有一派不列入:字謎字畫派,可納入蛇精病行列。

究竟哪一派預測的靠譜準確呢?不懂,因為我?guī)缀醪毁I彩票(買也是玩玩,娛樂娛樂),也不去研究。但不管哪一派總得有數據可研究,今天我只負責幫大家如何獲取3D彩票自創(chuàng)辦以來,所有的數據(中獎號碼、中獎注數、銷售額以及返獎比例等)

在爬取一些簡單的(沒有反爬機制的)靜態(tài)網頁時,一般采取的策略是:選中目標(所謂的url鏈接),觀察結構(鏈接結構,網頁結構),構思動手(選用什么HTML下載器,解析器等)。在爬蟲過程中,都會涉及到三種利器:

  • HTML下載器:下載HTML網頁
  • HTML解析器:解析出有效數據
  • 數據存儲器:將有效數據通過文件或者數據庫的形式存儲起來

今天,我們將利用requests庫和BeautifulSoup模塊來抓取中彩網頁福彩3D相關的信息,并將其保存到Excel表格中。

在開始前,先分析看看目標網頁的結構:

可以發(fā)現(xiàn),目標網頁的URL http://kaijiang.zhcw.com/zhcw/html/3d/list_2.html,每次變化一處:list_x后面的數字,其代表第幾頁。

然后,觀察其網頁結構,也很簡單,可以看到一期的彩票信息對應的源代碼是一個tr節(jié)點,我們可以用BeautifulSoup庫來提取這里面的一些信息。

整體思路是:若要獲取福彩3D創(chuàng)辦14年以來所有的信息(一共246頁),只需要分開請求246次,這樣獲取不同的頁面之后,再利用BeautifulSoup庫提取到相關信息,利用xlrd庫將數據寫入Excel中,就可以獲取到福彩3D所有的信息,結果如下圖:

(一共將近5000條數據)

詳情代碼如下: 

  1. import requests  
  2. from bs4 import BeautifulSoup  
  3. import xlwt  
  4. import time 
  5.  
  6.  
  7. #獲取第一頁的內容  
  8. def get_one_page(url):  
  9.     headers = {  
  10.         'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36'  
  11.     }  
  12.     response = requests.get(url,headers=headers)  
  13.     if response.status_code == 200:  
  14.         return response.text  
  15.     return None  
  16.  
  17. #解析第一頁內容,數據結構化  
  18. def parse_one_page(html):  
  19.  
  20.     soup = BeautifulSoup(html,'lxml' 
  21.     i = 0  
  22.     for item in soup.select('tr')[2:-1]:  
  23.  
  24.         yield{  
  25.             'time':item.select('td')[i].text,  
  26.             'issue':item.select('td')[i+1].text,  
  27.             'digits':item.select('td em')[0].text,  
  28.             'ten_digits':item.select('td em')[1].text,  
  29.             'hundred_digits':item.select('td em')[2].text,  
  30.             'single_selection':item.select('td')[i+3].text,  
  31.             'group_selection_3':item.select('td')[i+4].text,  
  32.             'group_selection_6':item.select('td')[i+5].text,  
  33.             'sales':item.select('td')[i+6].text,  
  34.             'return_rates':item.select('td')[i+7].text  
  35.         }  
  36.  
  37.  
  38. #將數據寫入Excel表格中  
  39. def write_to_excel():  
  40.     f = xlwt.Workbook()      
  41.     sheet1 = f.add_sheet('3D',cell_overwrite_ok=True)
  42.     row0 = ["開獎日期","期號","個位數","十位數","百位數","單數","組選3","組選6","銷售額","返獎比例"
  43.     #寫入第一行 
  44.     for j in range(0,len(row0)): 
  45.         sheet1.write(0,j,row0[j]) 
  46.  
  47.     #依次爬取每一頁內容的每一期信息,并將其依次寫入Excel 
  48.     i=0  
  49.     for k in range(1,247):  
  50.         url = 'http://kaijiang.zhcw.com/zhcw/html/3d/list_%s.html' %(str(k))  
  51.         html = get_one_page(url)  
  52.         print('正在保存第%d頁。'%k) 
  53.         #寫入每一期的信息  
  54.         for item in parse_one_page(html):  
  55.             sheet1.write(i+1,0,item['time'])  
  56.             sheet1.write(i+1,1,item['issue'])  
  57.             sheet1.write(i+1,2,item['digits'])  
  58.             sheet1.write(i+1,3,item['ten_digits'])  
  59.             sheet1.write(i+1,4,item['hundred_digits'])  
  60.             sheet1.write(i+1,5,item['single_selection'])  
  61.             sheet1.write(i+1,6,item['group_selection_3'])  
  62.             sheet1.write(i+1,7,item['group_selection_6'])  
  63.             sheet1.write(i+1,8,item['sales'])  
  64.             sheet1.write(i+1,9,item['return_rates'])  
  65.             i+=1  
  66.  
  67.  
  68.     f.save('3D.xls' 
  69.  
  70. def main():  
  71.     write_to_excel()  
  72.  
  73. if __name__ == '__main__' 
  74.     main()  

到此,關于14年的福彩3D信息都可以爬取下來,至于如何預測?下一期的彩票趨勢如何?不懂也不會,接下來是否中獎,就靠你們了。彩民們,我只能幫你們到這了!

最后結尾,關于彩票預測究竟準不準?我不說太多的理論分析,我只提出兩個問題:

命題1:以雙色球為例,下一期雙色球號碼,1,2,3,4,5,6,7 和 3,4,8,11,22,29,7 這兩組號碼的中獎概率如何?誰高誰低還是都一樣?

命題2:第二個問題更簡單。假設你已經投了9次硬幣,結果都是正面。現(xiàn)在你要投第10次,請問是正面的概率是多少? 

如果你還要問我,彩票有規(guī)律可循嗎?在我看來,彩票規(guī)律就是沒有規(guī)律(不信,你去分析分析14年以來的所有數據),以人類的計算水平,即使有的話也計算不出來的。彩票是娛樂,是一個運氣的游戲,一個人即使在彩票上賺到了錢,運氣好,也不代表使用的方法就可以提高彩票中獎率。任何打著提高中獎率的期號進行的盈利行為,即使出發(fā)點是善意的,也會最終走向錯誤。 

責任編輯:龐桂玉 來源: Python中文社區(qū)
相關推薦

2013-04-09 09:51:25

科來網絡分析

2022-03-28 11:41:21

物聯(lián)網物聯(lián)網市場智能電網

2021-02-21 14:10:13

Python開發(fā)數據

2013-02-19 09:26:17

2019-12-13 16:08:57

戴爾

2012-07-16 13:18:35

2013-01-14 10:04:16

2020-11-04 17:49:22

Python開發(fā)編程語言

2022-03-18 13:46:20

物聯(lián)網數據技術

2012-10-17 14:24:07

思科華為

2019-02-26 13:53:07

PythonJava編程語言

2019-10-09 13:17:49

智能手機舊手機系統(tǒng)

2011-08-23 10:49:44

算法

2023-07-05 15:47:32

2020-11-05 22:59:15

技能工業(yè)革命技術

2019-07-17 20:27:04

機器學習人工智能計算機

2020-11-02 10:52:05

Python 開發(fā)編程語言

2011-09-15 21:52:53

2016-04-20 11:08:57

代碼歷史新功能

2016-02-18 10:05:44

360數字公司創(chuàng)業(yè)
點贊
收藏

51CTO技術棧公眾號