項目實戰!我用Python爬取了14年所有的福彩3D信息
暫且不說,×××是否靠譜?×××也分人而異,江湖上騙術很多,有些甚至會誤以為×××的準確度可以很高,這些操盤手法,讓不知原理的彩民心甘情願地掏錢買料。
在×××上,也有正兒八經去研究“規律” 的,不外乎三個“派別”:數據派、圖形派、公式派。還有一派不列入:字謎字畫派,可納入蛇精病行列。
究竟哪一派預測的靠譜準確呢?不懂,因為我幾乎不買×××(買也是玩玩,娛樂娛樂),也不去研究。但不管哪一派總得有數據可研究,今天我只負責幫大家如何獲取3D×××自創辦以來,所有的數據(中獎號碼、中獎註數、銷售額以及返獎比例等)
在爬取一些簡單的(沒有反爬機制的)靜態網頁時,一般采取的策略是:選中目標
HTML下載器:下載HTML網頁
HTML解析器:解析出有效數據數據存儲器:將有效數據通過文件或者數據庫的形式存儲起來
今天,我們將利用requests庫和BeautifulSoup模塊來抓取中彩網頁福彩3D相關的信息,並將其保存到Excel表格中。
在開始前,先分析看看目標網頁的結構:
可以發現,目標網頁的URL http://kaijiang.zhcw.com/zhcw/html/3d/list_2.html,每次變化一處:list_x後面的數字,其代表第幾頁。
然後,觀察其網頁結構,也很簡單,可以看到一期的×××信息對應的源代碼是一個tr節點,我們可以用BeautifulSoup庫來提取這裏面的一些信息。
整體思路是:若要獲取福彩3D創辦14年以來所有的信息(一共246頁),只需要分開請求246次,這樣獲取不同的頁面之後,再利用BeautifulSoup庫提取到相關信息,利用xlrd庫將數據寫入Excel中,就可以獲取到福彩3D所有的信息,結果如下圖:
(一共將近5000條數據)
詳情代碼如下:
import requestsfrom bs4 import BeautifulSoupimport xlwtimport time#獲取第一頁的內容def get_one_page(url): headers = { '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' } response = requests.get(url,headers=headers) if response.status_code == 200: return response.text return None#解析第一頁內容,數據結構化def parse_one_page(html): soup = BeautifulSoup(html,'lxml') i = 0 for item in soup.select('tr')[2:-1]: yield{ 'time':item.select('td')[i].text, 'issue':item.select('td')[i+1].text, 'digits':item.select('td em')[0].text, 'ten_digits':item.select('td em')[1].text, 'hundred_digits':item.select('td em')[2].text, 'single_selection':item.select('td')[i+3].text, 'group_selection_3':item.select('td')[i+4].text, 'group_selection_6':item.select('td')[i+5].text, 'sales':item.select('td')[i+6].text, 'return_rates':item.select('td')[i+7].text }#將數據寫入Excel表格中def write_to_excel(): f = xlwt.Workbook() sheet1 = f.add_sheet('3D',cell_overwrite_ok=True) row0 = ["開獎日期","期號","個位數","十位數","百位數","單數","組選3","組選6","銷售額","返獎比例"] #寫入第一行 for j in range(0,len(row0)): sheet1.write(0,j,row0[j]) #依次爬取每一頁內容的每一期信息,並將其依次寫入Excel i=0 for k in range(1,247): url = 'http://kaijiang.zhcw.com/zhcw/html/3d/list_%s.html' %(str(k)) html = get_one_page(url) print('正在保存第%d頁。'%k) #寫入每一期的信息 for item in parse_one_page(html): sheet1.write(i+1,0,item['time']) sheet1.write(i+1,1,item['issue']) sheet1.write(i+1,2,item['digits']) sheet1.write(i+1,3,item['ten_digits']) sheet1.write(i+1,4,item['hundred_digits']) sheet1.write(i+1,5,item['single_selection']) sheet1.write(i+1,6,item['group_selection_3']) sheet1.write(i+1,7,item['group_selection_6']) sheet1.write(i+1,8,item['sales']) sheet1.write(i+1,9,item['return_rates']) i+=1 f.save('3D.xls')def main(): write_to_excel()if __name__ == '__main__': main()
到此,關於14年的福彩3D信息都可以爬取下來,至於如何預測?下一期的×××趨勢如何?不懂也不會,接下來是否中獎,就靠你們了。彩民們,我只能幫你們到這了!
最後結尾,關於×××究竟準不準?我不說太多的理論分析,我只提出兩個問題:
命題1:以雙色球為例,下一期雙色球號碼,1,2,3,4,5,6,7 和 3,4,8,11,22,29,7 這兩組號碼的中獎概率如何?誰高誰低還是都一樣?
命題2:第二個問題更簡單。假設你已經投了9次硬幣,結果都是正面。現在你要投第10次,請問是正面的概率是多少?
如果你還要問我,×××有規律可循嗎?在我看來,×××規律就是沒有規律(不信,你去分析分析14年以來的所有數據),以人類的計算水平,即使有的話也計算不出來的。×××是娛樂,是一個運氣的遊戲,一個人即使在×××上賺到了錢,運氣好,也不代表使用的方法就可以提高×××中獎率。任何打著提高中獎率的期號進行的盈利行為,即使出發點是善意的,也會最終走向錯誤。
xx的×××(尤其是黑彩)的實質,就是虛構一個不勞而獲的人,去忽悠一群想不勞而獲的人,最終養活一批真正不勞而獲的人。猶如幣圈一個bi樣!
如果你也是在學習Python,不管你是出於興趣自學還是說想要以後從事這方面的工作,這個是我的菜鳥學Python學習交流群:639584010,群裏有大牛,也有小白,群文件也有一些文檔教程和海量視頻,不定期還在群裏分享直播,我們歡迎你的加入。
項目實戰!我用Python爬取了14年所有的福彩3D信息