zhihu_spider
此項目的功能是爬取知乎用戶信息以及人際拓撲關係,爬蟲框架使用scrapy,數據存儲使用mongo,下載這些數據感受也沒什麼用,就當爲你們學習scrapy提供一個例子吧。代碼地址:https://github.com/LiuRoy/zhihu_spider,歡迎各位大神指出問題,另外知乎也歡迎你們關注哈 ^_^.git
流程圖
- 解析的用戶信息包括暱稱,頭像連接,我的基本信息還有關注人的數量和粉絲的數量。這個頁面還能獲取關注人頁面和粉絲頁面。
- 由上一步獲取的分頁列表頁面和關注人頁面獲取用戶人際關係,這兩個頁面相似,惟一麻煩的是獲得的靜態頁面最多隻有二十個,獲取所有的人員必須經過POST請求,解析到的我的主頁再由上一步來解析。
代碼解釋
scrapy文檔很是詳細,在此我就不詳細講解,你所能碰到的任何疑問均可以在文檔中找到解答。 github
- 爬蟲框架從start_requests開始執行,此部分會提交知乎主頁的訪問請求給引擎,並設置回調函數爲post_login.
- post_login解析主頁獲取_xsrf保存爲成員變量中,並提交登錄的POST請求,設置回調函數爲after_login.
- after_login拿到登錄後的cookie,提交一個start_url的GET請求給爬蟲引擎,設置回調函數parse_people.
- parse_people解析我的主頁,一次提交關注人和粉絲列表頁面到爬蟲引擎,回調函數是parse_follow, 並把解析好的我的數據提交爬蟲引擎寫入mongo。
- parse_follow會解析用戶列表,同時把動態的人員列表POST請求發送只引擎,回調函數是parse_post_follow,把解析好的用戶主頁連接請求也發送到引擎,人員關係寫入mongo。
- parse_post_follow單純解析用戶列表,提交用戶主頁請求至引擎。
效果圖