【爬蟲案例】用Python爬取知乎熱榜數(shù)據(jù)!
一、爬取目標(biāo)
您好,我是@馬哥python說,一名10年程序猿。?
本次爬取的目標(biāo)是【知乎熱榜】:https://www.zhihu.com/hot

共爬取到6個字段,包含:
熱榜排名, 熱榜標(biāo)題, 熱榜鏈接, 熱度值, 回答數(shù), 熱榜描述。
用Chrome瀏覽器,右鍵打開開發(fā)者模式,選擇:網(wǎng)絡(luò)->XHR這個選項,重新點擊一下【熱榜】按鈕,或者切換到【視頻】頁再切換回【熱榜】頁。 操作過程,如下圖所示:

下面,開始編碼爬蟲代碼。
二、編寫爬蟲代碼
首先,導(dǎo)入需要用到的庫:
定義一個請求地址,即上圖中的目標(biāo)鏈接地址:
定義一個請求頭,從開發(fā)者模式中的Headers->Request Headers中復(fù)制下來:
不知如何獲取Cookie?參考下圖:

向目標(biāo)地址發(fā)送請求(帶上請求頭),并用json格式接收返回數(shù)據(jù):
定義一些空列表,用于存儲數(shù)據(jù):
以“熱榜標(biāo)題”為例,解析數(shù)據(jù):
其他字段同理,不再贅述。
最后,把解析到的數(shù)據(jù),存儲到Dataframe中,并保存到csv文件里:
這里需要注意的是,to_csv要加上encoding='utf_8_sig'參數(shù),防止保存到csv文件產(chǎn)生亂碼數(shù)據(jù)。?
查看爬取結(jié)果:

共50條數(shù)據(jù),對應(yīng)熱榜TOP50排名。?
每條數(shù)據(jù)含6個字段:熱榜排名, 熱榜標(biāo)題, 熱榜鏈接, 熱度值, 回答數(shù), 熱榜描述。
三、同步視頻
3.1 代碼演示視頻

3.2 詳細(xì)講解視頻

四、獲取完整源碼
愛學(xué)習(xí)的小伙伴,本次分析過程的完整python源碼及結(jié)果數(shù)據(jù),我已打包好,并上傳至我的微信公眾號"老男孩的平凡之路",后臺回復(fù)"爬知乎熱榜"即可獲??!

我是@馬哥python說 ,持續(xù)分享python源碼干貨中!