首語:開始准備認真學習爬蟲了,先從基礎的開始學起,比如先爬取微博的個人動態。
兩個難點:獲取動態加載的內容和翻頁這兩項操作。
對象:何炅的個人
分析過程:
首頁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=100306和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=1&pl_name=Pl_Official_MyProfileFeed__22&id=1003061195230310&script_uri=/hejiong&feed_type=0&pre_page=1&domain_op=100306。
第一個難點我們就解決了——獲取動態加載內容的url。
接下來看看第二個難點——如何實現翻頁
我們打開網絡,通過點擊其他頁面,來查看跳出的請求,就能找到其他頁面的url了。

其實通過第一個頁面的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了。
