scrapy 知乎用戶信息爬蟲

zhihu_spider

此項目的功能是爬取知乎用戶信息以及人際拓撲關係,爬蟲框架使用scrapy,數據存儲使用mongo,下載這些數據感覺也沒什麼用,就當為大家學習scrapy提供一個例子吧。代碼地址:LiuRoy/zhihu_spider,歡迎各位大神指出問題,另外知乎也歡迎大家關注哈 ^_^.

流程圖

  • 請求知乎 - 與世界分享你的知識、經驗和見解獲取頁面中的_xsrf數據,知乎開啟了跨站請求偽造功能,所有的POST請求都必須帶上此參數。
  • 提交用戶名,密碼已經第一步解析的_xsrf參數到知乎 - 與世界分享你的知識、經驗和見解,登陸獲取cookies
  • 訪問用戶主頁,以我的主頁為例weizhi xiazhi - 知乎, 如下圖:
  • 解析的用戶信息包括昵稱,頭像鏈接,個人基本信息還有關注人的數量和粉絲的數量。這個頁面還能獲取關注人頁面和粉絲頁面。
  • 由上一步獲取的分頁列表頁面和關注人頁面獲取用戶人際關係,這兩個頁面類似,唯一麻煩的是得到的靜態頁面最多只有二十個,獲取全部的人員必須通過POST請求,解析到的個人主頁再由上一步來解析。
  • 代碼解釋

    scrapy文檔非常詳細,在此我就不詳細講解,你所能碰到的任何疑問都可以在文檔中找到解答。

    • 爬蟲框架從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單純解析用戶列表,提交用戶主頁請求至引擎。
    • 效果圖

作者:腩啵兔子

出處:腩啵兔子的博客專欄

最近很多人私信問我問題,平常知乎評論看到不多,如果沒有及時回復,大家也可以加小編微信:tszhihu,進知乎大數據分析挖掘交流群,可以跟各位老師互相交流。謝謝。

推薦閱讀:

TAG:知乎 | Python | 知乎用户 |