python[requests]爬取知乎個人信息數據

效果

預覽地址:http://23.105.208.123/
圖片描述

技術棧

源碼地址

https://github.com/MasakiOvO/...

python需要安裝的庫

requests,BeautifulSoup,redis,django

思路

兩個程序。

  1. 一個程序負責爬取用戶關注和粉絲列表, 並把用戶名存入set
  2. 另一個程序負責根據用戶名獲取詳細信息,存入hash

維護 兩個列表 1.已爬用戶 2.未爬用戶
第一個程序的流程:

當未爬set不爲空時:執行如下操作:
每次從未爬取列表中取出一個用戶名 
根據用戶名,獲取他的關注與粉絲並遍歷,如果用戶既沒在已爬用戶,也沒在未爬用戶 加入未爬用戶列表。

第二個程序的流程

每次從未爬set中取出一個用戶名,調用接口獲取詳細信息並存入redis hash中

接口獲取

圖片描述
打開某個人的個人主頁,按F12
圖片描述
選擇XHR 然後點擊圖1的關注我的人,和我關注的人,在圖2就可以看到header和cookie。

獲取用戶列表Api:

https://www.zhihu.com/api/v4/...{username}/{type}?include=data[*].answer_count,articles_count,gender,follower_count,is_followed,is_following,badge[?(type=best_answerer)].topics&offset=20&limit=20

username 是用戶名,
type 是類型, 有兩種可選 [followers,followees], followers是粉絲 followees是關注
改變offset的值可以獲取分頁

獲取個人信息Api:

https://www.zhihu.com/people/...

user_token是用戶名
這個api中 返回的是html頁面,在html頁面中有一個scirpt標籤裏面的內容是json格式的用戶信息,這就很方便了,直接獲取鍵值對 對應的屬性就ok。

發送請求

F12查看接口,把header和cookie放進requests.get()方法中。

剩下的就很簡單了,不贅述了。

總結

還有很多優化的地方。比如加入中間件,來提升爬蟲的穩定性。對數據進行分類,統計城市分佈。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章