摘要
從零實(shí)現(xiàn)一個(gè)高性能網(wǎng)絡(luò)爬蟲系列教程第一篇,后續(xù)會(huì)有關(guān)于url去重、如何反爬蟲、如何提高抓取效率、分布式爬蟲系列文章。
以我寫的一個(gè)知乎爬蟲為Demo講解,github地址 (https://github.com/wycm/zhihu-crawler) ,有興趣的朋友可以star下。
網(wǎng)絡(luò)請(qǐng)求的分析是寫網(wǎng)絡(luò)爬蟲非常關(guān)鍵且重要的一個(gè)步驟。這篇文章以知乎網(wǎng)站為例,從網(wǎng)絡(luò)請(qǐng)求分析到代碼(java)實(shí)現(xiàn)。
目的
獲取某個(gè)知乎用戶的所有關(guān)注用戶的個(gè)人資料
請(qǐng)求分析
就目前的大部分網(wǎng)頁來說,網(wǎng)頁上能看到的數(shù)據(jù)大多都是直接在網(wǎng)站后臺(tái)生成好數(shù)據(jù)(有的網(wǎng)頁是在網(wǎng)站前端通過js代碼處理后顯示,如數(shù)據(jù)混淆、加密等)直接在前臺(tái)顯示。
雖然很多網(wǎng)站采用了ajax異步加載,但是歸根結(jié)底它還是一個(gè)http請(qǐng)求。只要能夠分析出對(duì)應(yīng)數(shù)據(jù)的請(qǐng)求來源,那么就很容易的拿到你想要的數(shù)據(jù)了。以下步驟講解如何分析http請(qǐng)求。
以我的知乎賬戶為例,獲取我的所有關(guān)注用戶資料。首先打開我的關(guān)注列表,可以看到主面板就是我的關(guān)注用戶列表,
我一共關(guān)注233個(gè)用戶,現(xiàn)在目的是就是要獲取這233個(gè)用戶的個(gè)人資料信息。打開F12->NetWork,勾選上Preserve log和Disable cache(如下圖)。下拉滾動(dòng)條,點(diǎn)擊下一頁獲取對(duì)應(yīng)請(qǐng)求(在翻頁的過程會(huì)有很多無關(guān)的請(qǐng)求),待頁面加載完成后,在請(qǐng)求列表中右鍵->Save as HAR with content,這個(gè)文件是把當(dāng)前請(qǐng)求(request)列