Python爬蟲之爬取彩票并簡單統(tǒng)計

一、背景

在網(wǎng)上閑逛的日子總歸是無聊的,百度的跟蹤也是一如既往的好,它總是會給我推薦一些互聯(lián)網(wǎng)圈里面的新聞,然后又在其中穿插一些新游戲廣告,正因如此,我看到了一篇報道某個地方某個人中了五百萬大獎的新聞,靈感迸發(fā),進而寫了一個關(guān)于彩票的爬蟲。

二、網(wǎng)頁分析

今天爬取的是中國彩票網(wǎng)(中彩網(wǎng))中的福彩3D這款彩票,在我初中的時候很喜歡買這個彩票,因為只需要在0~9的十個數(shù)字中選三個,相對于其余的選七八個數(shù)字來說要少得多,但是按照排列公式來說的話一共有720種選法(不包括重復(fù)),所以還是挺可怕的。廢話不多說了,首先是網(wǎng)址:http://www.zhcw.com/3d/kaijiangshuju/?type=0,進去之后下一頁發(fā)現(xiàn)網(wǎng)址沒有任何變化,由此判斷是個動態(tài)網(wǎng)頁,需要找出真正的網(wǎng)址,故網(wǎng)頁空白任意位置鼠標(biāo)右鍵打開檢查(PS:我用的是Chrome瀏覽器,某些瀏覽器可能是審查元素),在彈出來的窗口中點擊Network之后F5刷新,會看到彈出了一大堆的網(wǎng)址,我們找啊找,最終找到一個名字叫l(wèi)ist.html的頁面,我承認(rèn)當(dāng)時我激動了,因為list是列表的意思,在這個里面列表能是啥啊?肯定就是開獎列表啊!打開之后果不其然是開獎列表,OK,找到了真正的網(wǎng)址,如圖一

圖一

下一步就是實現(xiàn)翻頁效果咯,我們進入真實網(wǎng)址,點擊下一頁之后發(fā)現(xiàn)網(wǎng)址后面的list.html變成了list_2.html,再翻一頁變成了list_3.html,嘗試將第一頁改為list_1.html后發(fā)現(xiàn)也能正確瀏覽,故網(wǎng)址規(guī)律找到了。
最后一步分析開獎號碼到底藏在哪個地方,這里不詳細的說步驟了,如圖二,開獎號碼就在<em></em>中。

圖二

OK,網(wǎng)頁分析已經(jīng)完成,下面直接進入代碼。

三、代碼解釋

如圖三的代碼,僅僅只有35行,這應(yīng)該只是一個我寫過的爬蟲中排在中等偏下的難度吧。簡單解釋:14行導(dǎo)入第三方包,這個不具體解釋了,69行是瀏覽器的請求頭,這兩個百度一下就知道了。11行定義一個lists列表用來存儲開獎號碼。下面兩個函數(shù),get_info函數(shù)用來獲取開獎號碼,因為這里為了方便下一個統(tǒng)計函數(shù),所以直接用正則表達式進行爬取,然后將爬取的結(jié)果依次存到lists列表中,最后返回lists列表供data函數(shù)使用,下面data函數(shù)功能是統(tǒng)計每一個開獎數(shù)字出現(xiàn)的次數(shù),最后main函數(shù)里面實現(xiàn)翻頁的效果以及調(diào)用get_info函數(shù)爬取每頁的內(nèi)容,最后有個time.sleep()語句,讓程序在每個頁面上停留一會兒,停留時間為5~20秒中的任意一個數(shù)字。最后一行待所有的頁面都獲取完成之后執(zhí)行data()函數(shù)。

圖三

四、總結(jié)及運行結(jié)果

總體來說這個程序很簡單,其實也可以把它變得稍稍難一點,比如加上數(shù)據(jù)分析和機器學(xué)習(xí)中的學(xué)習(xí)算法和預(yù)測算法,不過我還沒學(xué)那些東西,而且就目前來看學(xué)這些應(yīng)該要等到今年年底了,所以有些不完美。不過等學(xué)了之后倒是可以繼續(xù)完善這個程序,使之成為一個有得賺的程序。要知道大佬們預(yù)測世界杯準(zhǔn)確率都低得嚇人啊。最后如圖四,運行結(jié)果顯示從2018年一月份到現(xiàn)在為止出現(xiàn)次數(shù)最多的是6。

圖四
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容