python3.6抓取100知乎用戶頭像詳解(四)

目標:抓取知乎最高點贊者的關注者的頭像,并下載于本地文件夾。

我們采用:requests(獲?。猨son——urlretrieve(下載)

廢話不多說,先上結果與代碼:

代碼混亂,所以采用圖片,源碼可前往文末知乎

前言

①:請求頭(headers)

知乎對爬蟲進行了限制,需要加上headers才能爬取。

請求頭信息承載了關于客戶端瀏覽器、請求頁面、服務器等相關信息,用來告知服務器發(fā)起請求的客戶端的具體信息。

對比知乎的請求頭信息和常見的請求頭信息,發(fā)現(xiàn)知乎請求頭多了authorization和X-UDID的信息

②:urlretrieve

urllib模塊提供的urlretrieve()函數(shù),可直接將遠程數(shù)據(jù)下載到本地

③:抓取頁面,如圖

現(xiàn)重點講解代碼:

一:請求頭(headers)

每個網(wǎng)站的請求頭都會不一樣,但爬取得網(wǎng)站,都有例子,大家在不初期,跟著選就行

Authorization:HTTP授權的授權證書

User-Agent:代表你用哪種瀏覽器

X-UDID:一串驗證碼

二:真實的urls

異步加載中,真實的url并非https://www.zhihu.com/people/feifeimao/followers,真正的url需要我們通過抓包獲取,流程如圖:

所以我們得出真實url:https://www.zhihu.com/api/v4/members/feifeimao/followers?include=data%5B*%5D.answer_count%2Carticles_count%2Cgender%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F(type%3Dbest_answerer)%5D.topics&offset=20&limit=20

通過加載更多,我們發(fā)現(xiàn)url中start隨之同步變化,變化的間隔為20,即offset=20(第一頁),start=40(第二頁),以此類推,所以我們得出.format(i*20),大家可以對比第三篇的翻頁。

三:img_url

我們抓取的img的url需要有序的排列,即采用append函數(shù),依次把他們放入img_url。

四:json

之前我們用得.text是需要網(wǎng)頁返回文本的信息,而這里返回的是json文件,所以用.json

json結構很清晰,大家一層一層選取就好了

取出字典中的值,需要在方括號中指明值對應的鍵

總結:

1:翻頁,就是尋找url中的規(guī)律,大家可以對比第二、三篇的翻頁哦,都是一個套路。

2:請求頭(headers)就像一把開啟大門的鑰匙

3:抓取的頭像url尺寸很小,我們把_is去掉,就變成正常尺寸了,不過這需要用到正則re,目前我沒有學習過re,后續(xù)的文章將會大家解決這個坑哦

https://pic2.zhimg.com/v2-9686febfd53ca3defe8112790b24e67e_is.jpg。

下一篇文章,將對前四篇的語法做詳細講解。

有不清楚的地方,大家可以留言,點贊,我看到了,會第一時間回復你。

本系列文章同步跟新于微信公眾號工科男雷先生。知乎:雷之

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容