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

隨着代理IP技術的普及,爬蟲的使用也變得簡單起來,許多企業和個人都開始用爬蟲技術來抓取數據。那麼今天就來分享一個爬蟲實例,幫助你們更好的理解爬蟲。下面我們用程序模擬Ajax請求,將我的前10頁微博全部爬取下來。
首先,定義一個方法來獲取每次請求的結果。在請求時,page是一個可變參數,所以我們將它作爲方法的參數傳遞進來,相關代碼如下:
爬蟲實例 利用Ajax爬取微博數據
首先,這裏定義了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中的各個信息,賦值爲一個新的字典返回即可:
爬蟲實例 利用Ajax爬取微博數據
這裏我們藉助pyquery將正文中的HTML標籤去掉。
最後,遍歷一下page,一共10頁,將提取到的結果打印輸出即可:
爬蟲實例 利用Ajax爬取微博數據
另外,我們還可以加一個方法將結果保存到MongoDB數據庫:
爬蟲實例 利用Ajax爬取微博數據
這樣所有功能就實現完成了。運行程序後,樣例輸出結果如下:
爬蟲實例 利用Ajax爬取微博數據
查看一下MongoDB,相應的數據也被保存到MongoDB,如下圖所示。
爬蟲實例 利用Ajax爬取微博數據
這樣,我們就順利通過分析Ajax並編寫爬蟲爬取下來了微博列表。通過這個實例,我們主要學會了怎樣去分析Ajax請求,怎樣用程序來模擬抓取Ajax請求。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章