1. 程式人生 > >爬蟲實例 利用Ajax爬取微博數據

爬蟲實例 利用Ajax爬取微博數據

alt b2b 每次 png 微博 可變 實例 我們 images

隨著代理IP技術的普及,爬蟲的使用也變得簡單起來,許多企業和個人都開始用爬蟲技術來抓取數據。那麽今天就來分享一個爬蟲實例,幫助你們更好的理解爬蟲。下面我們用程序模擬Ajax請求,將我的前10頁微博全部爬取下來。
首先,定義一個方法來獲取每次請求的結果。在請求時,page是一個可變參數,所以我們將它作為方法的參數傳遞進來,相關代碼如下:
技術分享圖片
首先,這裏定義了base_url來表示請求的URL的前半部分。接下來,構造參數字典,其中type、value和containerid是固定參數,page是可變參數。接下來,調用urlencode()方法將參數轉化為URL的GET請求參數,即類似於type=uid&value=2830678474&containerid=1076032830678474&page=2這樣的形式。隨後,base_url與參數拼合形成一個新的URL。接著,我們用requests請求這個鏈接,加入headers參數。然後判斷響應的狀態碼,如果是200,則直接調用json()方法將內容解析為JSON返回,否則不返回任何信息。如果出現異常,則捕獲並輸出其異常信息。

隨後,我們需要定義一個解析方法,用來從結果中提取想要的信息,比如這次想保存微博的id、正文、贊數、評論數和轉發數這幾個內容,那麽可以先遍歷cards,然後獲取mblog中的各個信息,賦值為一個新的字典返回即可:
技術分享圖片
這裏我們借助pyquery將正文中的HTML標簽去掉。
最後,遍歷一下page,一共10頁,將提取到的結果打印輸出即可:
技術分享圖片
另外,我們還可以加一個方法將結果保存到MongoDB數據庫:
技術分享圖片
這樣所有功能就實現完成了。運行程序後,樣例輸出結果如下:
技術分享圖片
查看一下MongoDB,相應的數據也被保存到MongoDB,如下圖所示。
技術分享圖片
這樣,我們就順利通過分析Ajax並編寫爬蟲爬取下來了微博列表。通過這個實例,我們主要學會了怎樣去分析Ajax請求,怎樣用程序來模擬抓取Ajax請求。

爬蟲實例 利用Ajax爬取微博數據