爬蟲實例(一)——爬取微博動態


首語:開始准備認真學習爬蟲了,先從基礎的開始學起,比如先爬取微博的個人動態。

兩個難點:獲取動態加載的內容和翻頁這兩項操作。

對象:何炅的個人

分析過程:

  首頁url:https://weibo.com/hejiong?is_search=0&visible=0&is_all=1&is_tag=0&profile_ftype=1&page=1#feedtop

  我們可以直接用get方法請求該URL,但是注意要帶上cookies,這樣才能得到網頁信息。cookies可以直接使用開發者工具來查找。

  

import requests
urll="https://weibo.com/hejiong?is_search=0&visible=0&is_all=1&is_tag=0&profile_ftype=1&page=1#feedtop"
r=requests.get(urll,cookies=cookiess)#必須帶上cookies才能獲得網頁信息。
print(r.text)

 

這里就出現了之前講到的一個難點——頁面內容並不是完整顯示地,有部分內容動態加載,只有你拉到底部才會加載出來。

而我們之前的代碼是爬取不到動態加載的內容的,這里就需要對動態加載的內容進行分析一下了

打開瀏覽器的開發者工具,查看xhr內容,可以確定下面畫紅框的就是動態加載的內容。

 

我們可以查看該請求的url,一個頁面一般會動態加載兩次,我們可以比較一下這兩個動態加載的url,可以發現只有兩處不同————_rnd和pagebar

經過自己的試驗,可以發現_rnd這個參數根本不起作用,只有pagebar起作用,所以我們可以直接把_rnd這部分給刪掉

於是第一個頁面的動態加載的url就可以寫成:https://weibo.com/p/aj/v6/mblog/mbloglist?ajwvr=6&domain=100306&is_search=0&visible=0&is_all=1&is_tag=0&profile_ftype=1&page=1&pagebar=0&pl_name=Pl_Official_MyProfileFeed__22&id=1003061195230310&script_uri=/hejiong&feed_type=0&pre_page=1&domain_op=100306https://weibo.com/p/aj/v6/mblog/mbloglist?ajwvr=6&domain=100306&is_search=0&visible=0&is_all=1&is_tag=0&profile_ftype=1&page=1&pagebar=1&pl_name=Pl_Official_MyProfileFeed__22&id=1003061195230310&script_uri=/hejiong&feed_type=0&pre_page=1&domain_op=100306。

第一個難點我們就解決了——獲取動態加載內容的url。

 

接下來看看第二個難點——如何實現翻頁

我們打開網絡,通過點擊其他頁面,來查看跳出的請求,就能找到其他頁面的url了。

獲取到的url為:https://weibo.com/hejiong?pids=Pl_Official_MyProfileFeed__22&is_search=0&visible=0&is_all=1&is_tag=0&profile_ftype=1&page=5&ajaxpagelet=1&ajaxpagelet_v6=1&__ref=%2Fhejiong%3Fis_search%3D0%26visible%3D0%26is_all%3D1%26is_tag%3D0%26profile_ftype%3D1%26page%3D1&_t=FM_152535932058827

其實通過第一個頁面的url推算也能猜出只是更改page參數的值就能實現翻頁了,將上面的頁面的url不斷去除也能得到更好的url:https://weibo.com/hejiong?is_search=0&visible=0&is_all=1&is_tag=0&profile_ftype=1&page=5#feedtop

同樣可以得到第五個頁面的兩個動態加載的url:https://weibo.com/p/aj/v6/mblog/mbloglist?ajwvr=6&domain=100306&is_search=0&visible=0&is_all=1&is_tag=0&profile_ftype=1&page=5&pagebar=0&pl_name=Pl_Official_MyProfileFeed__22&id=1003061195230310&script_uri=/hejiong&feed_type=0&pre_page=5&domain_op=100306&__rnd=1525359568282和https://weibo.com/p/aj/v6/mblog/mbloglist?ajwvr=6&domain=100306&is_search=0&visible=0&is_all=1&is_tag=0&profile_ftype=1&page=5&pagebar=1&pl_name=Pl_Official_MyProfileFeed__22&id=1003061195230310&script_uri=/hejiong&feed_type=0&pre_page=5&domain_op=100306&__rnd=1525359603560

前面講第一頁的時候講了這兩個的區別就是pagebar,一個是0,一個是1;第五頁的這兩個url和第一頁的兩個url的區別是page值的不同,所以我們就可以自己手動構造所需要抓取的每個頁面的url了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM