目標(biāo):抓取知乎最高點贊者的關(guān)注者的頭像调俘,并下載于本地文件夾伶棒。
我們采用:requests(獲取)——json——urlretrieve(下載)
廢話不多說彩库,先上結(jié)果與代碼:
前言:
①:請求頭(headers)
知乎對爬蟲進(jìn)行了限制侧巨,需要加上headers才能爬取舅锄。
請求頭信息承載了關(guān)于客戶端瀏覽器鞭达、請求頁面司忱、服務(wù)器等相關(guān)信息皇忿,用來告知服務(wù)器發(fā)起請求的客戶端的具體信息。
對比知乎的請求頭信息和常見的請求頭信息坦仍,發(fā)現(xiàn)知乎請求頭多了authorization和X-UDID的信息
②:urlretrieve
urllib模塊提供的urlretrieve()函數(shù)鳍烁,可直接將遠(yuǎn)程數(shù)據(jù)下載到本地
③:抓取頁面,如圖
現(xiàn)重點講解代碼:
一:請求頭(headers)
每個網(wǎng)站的請求頭都會不一樣繁扎,但爬取得網(wǎng)站幔荒,都有例子,大家在不初期梳玫,跟著選就行
Authorization:HTTP授權(quán)的授權(quán)證書
User-Agent:代表你用哪種瀏覽器
X-UDID:一串驗證碼
二:真實的urls
異步加載中爹梁,真實的url并非https://www.zhihu.com/people/feifeimao/followers,真正的url需要我們通過抓包獲取提澎,流程如圖:
通過加載更多姚垃,我們發(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結(jié)構(gòu)很清晰,大家一層一層選取就好了
取出字典中的值跳纳,需要在方括號中指明值對應(yīng)的鍵
總結(jié):
1:翻頁忍饰,就是尋找url中的規(guī)律,大家可以對比第二寺庄、三篇的翻頁哦艾蓝,都是一個套路。
2:請求頭(headers)就像一把開啟大門的鑰匙
3:抓取的頭像url尺寸很小斗塘,我們把_is去掉赢织,就變成正常尺寸了,不過這需要用到正則re馍盟,目前我沒有學(xué)習(xí)過re于置,后續(xù)的文章將會大家解決這個坑哦
https://pic2.zhimg.com/v2-9686febfd53ca3defe8112790b24e67e_is.jpg。
下一篇文章贞岭,將對前四篇的語法做詳細(xì)講解八毯。
有不清楚的地方搓侄,大家可以留言,點贊话速,我看到了讶踪,會第一時間回復(fù)你。