步步分析爬取知乎用戶頭像

知乎是個練習爬蟲的好地方,可以找到很多資源,還能挑戰一下反爬蟲機制。剛開始不懂得AJAX的時候真的拿這些動態加載的網頁沒有辦法,只好退一步,用selenium+chromedriver寫一些簡單的程序,這樣做雖然簡化了開發過程,但是總是覺得效率很低,而卻方式不太優雅,只是調用瀏覽器去做着做那,遇到異常還不好處理。

所以我決定放棄以前用selenium寫的爬取頭像的程序,重新分析網頁的請求,直接找到每個用戶頭像的url下載下來。

首先希望你用的是火狐或者是谷歌瀏覽器,並且會使用F12的開發者工具,我們先隨意找一個關注着很多的用戶,然後點開他的關注者頁面


隨意找一個有頭像的用戶,右鍵審查元素

先認識一下知乎存儲頭像的url,我們的目標就是拿到類似於這樣的鏈接

接下來以火狐瀏覽器爲例,把從F12工具欄裏查看抓取的請求,這裏僅需要查看類型爲XHR的請求即可,這種類型的請求往往就是通過異步請求獲取的json數據

我們根據請求名稱猜測,那個有followers的json數據就是我們要的東西,點開就能看到請求頭,還有響應內容

其中data字段裏面的0-19就是本頁面中顯示的20個關注者,展開可以看到每個關注者的信息

可以很明顯的知道該用戶的暱稱、id和頭像等信息,注意截圖的第一行就是他頭像的鏈接了,複製該鏈接,把後面那個"_{size}"去掉(即https://pic3.zhimg.com/v2-4748657d76e0c4235f29d6b45fba6208.jpg)就可以從瀏覽器上之間看到他的頭像大圖了,然後我們把這個過程用代碼實現就可以了。

API:https://www.zhihu.com/api/v4/members/wen9/followers?include=data[*].answer_count,articles_count,gender,follower_count,is_followed,is_following,badge[?(type=best_answerer)].topics&offset=20&limit=20

以上是獲取關注者的url,修改最後的offset的值可以實現翻頁,如翻到第二頁(offset=40)

下面是構建請求的過程,直接用python發送get請求會被知乎攔截,然後嘗試添加headers信息,還是不行,最後加上自己已經登錄進去的cookie就可以了

followers裏面就是關注者的列表了,在結合前面的分析,從中提取出頭像的鏈接,然後get這個鏈接,把圖片下載下來就好了,剩下的步驟就很簡單,不再細說了


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