當前位置:
首頁 > 最新 > python編程學習之面向函數初接觸!這次我們來抓取QQgame信息吧!

python編程學習之面向函數初接觸!這次我們來抓取QQgame信息吧!

作為一個長期坐辦公室的閑人來說,QQ遊戲一度是我們的主要消磨時間的工具,當然現在改成python了,哈哈。

今天我們就來抓取下QQgame下所有遊戲的頁面地址和簡介,然後分類保存本地吧!

這裡我們用面向函數的模式試試寫我們的爬蟲。

首先是分析url,主頁地址:http://qqgame.qq.com/,打開F12開發者工具,

這裡我們可以看到有很多的分頁,仔細看看就會發現主要是分2大塊:熱門遊戲/最新遊戲(這倆url竟然是一樣的,騰訊的程序員你們是有多懶。。。)和分類遊戲(棋牌、網頁、單機、街機等等),其實只需要爬後者就可以,但是各個分類下遊戲頁面並不多,熱門遊戲裡面有500多款呢,所以乾脆一起抓取下來,然後分類保存就好!

找到遊戲分類後,再進入隨便一個分類頁面,來看看網頁構成。

非常簡單的網頁,這裡我們可以很容易獲取遊戲的url和相關信息

我們提取中間的遊戲名字,簡介,鏈接就可以了(大型遊戲並不在QQgame裡面)。Ok,我們開工!

2、代碼實現

這次我們用到了requests、time、random、json和lxml模塊,其中我們的最終結果要保存為json文件,所以這裡導入了json模塊

構造一個函數作為主體函數main(),把url寫入進去,新建一個空字典,用於接收相關信息,我們這次採用xpath模塊來匹配相應標籤內容,簡單快捷。

最後5行是做為主程序執行,加入了開始和結束時間,用於統計用時,並顯示出來

這裡我們新建了2個函數,一個是get_html函數,用於獲取網頁源碼,UA部分填寫自己的就可以。在函數內做一個判斷,如果沒有訪問成功則返回False,用於判斷網頁是否可訪問!後面會多次用到。

還有一個就是save函數用於存儲數據,它接收main函數傳入的分類字典,字典內含有分類名字和url對應的各個元素,將key值取出做循環遍歷字典,然後用dic[key]來取出對應的url。因為存在每個分類的翻頁,所有在下面做一個while循環,並新建2個函數,1個獲取當前頁相應內容的函數,1個是獲取下一頁url的函數,用if判斷,如果下一頁存在,則繼續循環,不存在則跳出循環並顯示相應信息。然後將返回的頁面信息寫入文件!

注意while循環下先用if函數判斷傳入的url是否可訪問,來決定是否執行獲取信息!

Next_url函數獲取下一頁的url地址並返回!注意源碼中下一頁的跳轉url是簡寫模式,需要加上前面的主頁信息,但又不是『』qqgame.qq.com「,這裡是個大坑!

Get_game函數獲取當前頁面所有的相關信息,並保存到字典返回!

為了結果的美觀,這裡我們新建了3個字典,返回數據為{序號:{遊戲名稱:{遊戲簡介,遊戲頁面地址}}}的模式!

到這裡,整個代碼就寫完了,我們運行並驗證下吧!

3、運行結果!

開始運行

運行完畢,因為沒有多少內容,所以速度還是很快的,30多秒完成!

保存的文件

記事本打開一個看看

亂碼?不要著急,我們找個在線解析json的網頁,看看內容是什麼!將內容複製到網頁的json數據中

點擊視圖

吼吼~!數據出來了有沒有!我們去網頁中找找看是否正確!

數據一致~!寫完手工!

完整代碼送上

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嚮往飛翔的蒲公英 的精彩文章:

TAG:嚮往飛翔的蒲公英 |