這篇文章將為大家詳細(xì)講解有關(guān)用python爬蟲收集知乎大V頭像的示例,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
一:請求頭(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需要我們通過抓包獲取,流程如圖:
所以我們得出真實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結(jié)構(gòu)很清晰,大家一層一層選取就好了
取出字典中的值,需要在方括號中指明值對應(yīng)的鍵
以下為全部代碼:
# -*- coding: utf-8 -*- import requests import json from urllib.request import urlretrieve headers = {'authorization':'Bearer Mi4xQXN3S0F3QUFBQUFBUUVJSjdTempDaGNBQUFCaEFsVk5BQzRmV3dDVVJzeU9NOWxNU0pZT1BNdFJ5bTlrSzk3MU1B|1513218048|1e03f7e7f26825482a72e4a629ef80292847548e', 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36', 'x-udid':'AEBCCe0s4wqPToZZF6LV3roAjT8uEikZF1k=', } #請求頭 urls = ['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={}&limit=20'.format(i*20) for i in range (0,5)] img_urls = [] #用來存所有的img_url for url in urls: datas = requests.get(url,headers = headers).json()['data'] #獲取json文件下的data for it in datas: img_url = it['avatar_url'] #獲取頭像url img_urls.append(img_url) #把獲取的url依次放入img_urls i = 0 #計數(shù) for it in img_urls: urlretrieve(it,'D://%s.jpg' % i) #通過url,依次下載頭像,并保存于D盤 i = i+1 #i依次累加
關(guān)于用python爬蟲收集知乎大V頭像的示例就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。