摘要

從零實現(xiàn)一個高性能網(wǎng)絡(luò)爬蟲系列教程第一篇,后續(xù)會有關(guān)于url去重、如何反爬蟲、如何提高抓取效率、分布式爬蟲系列文章。
以我寫的一個知乎爬蟲為Demo講解,github地址 (https://github.com/wycm/zhihu-crawler) ,有興趣的朋友可以star下。
網(wǎng)絡(luò)請求的分析是寫網(wǎng)絡(luò)爬蟲非常關(guān)鍵且重要的一個步驟。這篇文章以知乎網(wǎng)站為例,從網(wǎng)絡(luò)請求分析到代碼(java)實現(xiàn)。

目的

獲取某個知乎用戶的所有關(guān)注用戶的個人資料

請求分析

  • 就目前的大部分網(wǎng)頁來說,網(wǎng)頁上能看到的數(shù)據(jù)大多都是直接在網(wǎng)站后臺生成好數(shù)據(jù)(有的網(wǎng)頁是在網(wǎng)站前端通過js代碼處理后顯示,如數(shù)據(jù)混淆、加密等)直接在前臺顯示。

  • 雖然很多網(wǎng)站采用了ajax異步加載,但是歸根結(jié)底它還是一個http請求。只要能夠分析出對應(yīng)數(shù)據(jù)的請求來源,那么就很容易的拿到你想要的數(shù)據(jù)了。以下步驟講解如何分析http請求。

  1. 以我的知乎賬戶為例,獲取我的所有關(guān)注用戶資料。首先打開我的關(guān)注列表,可以看到主面板就是我的關(guān)注用戶列表,
    我一共關(guān)注233個用戶,現(xiàn)在目的是就是要獲取這233個用戶的個人資料信息。打開F12->NetWork,勾選上Preserve log和Disable cache(如下圖)。
    大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

  2. 下拉滾動條,點(diǎn)擊下一頁獲取對應(yīng)請求(在翻頁的過程會有很多無關(guān)的請求),待頁面加載完成后,在請求列表中右鍵->Save as HAR with content,這個文件是把當(dāng)前請求(request)列