zhihu-oauth 能否快速判斷兩個用戶(非登錄用戶)之間的關注關係?


瀉藥。

zhihu-oauth 這個庫使用的是知乎 Android 客戶端的未公開 API,所以在使用的時候你就想像成在使用 Android 客戶端就好。

舉個例子:

如果你是想獲取某用戶和當前已登錄用戶的關係,那就很簡單。因為你在使用手機點開某用戶主主頁的時候,根據你們倆的關注關係,關注這個按鈕的文本可能會是「關注(表示未關注)」「已關注」「互相關注」「已被關注」,這就表示你們之間的四種關係。

在庫里,每個 People 對象有兩個屬性:is_follower、is_following,含義如下:

(來源:People - 用戶 - Zhihu-OAuth 0.0.37 文檔)

通過這兩個屬性你就能知道任意用戶和你的關係了。

再看題主的需求是任意兩個非當前登錄用戶之間的關係,稍微擺弄一下你的手機客戶端,應該就能發現沒法直接知道,So,我的庫也是沒法直接做到的……

如果題主非要知道的話,我建議可以把他倆的關注對象都列一下,然後判斷一下有沒有對方就行了。

之所以不用粉絲而用關注對象,原因有二:

  1. 知乎對於用戶粉絲的獲取有限制,最多獲取到最近的 5020 個,不信你可以點開一個幾十萬粉大 V 的粉絲列表,然後一直往下滑,很明顯沒有全部獲取到就不能繼續滑了……(我是真試過的)
  2. 一般來說不管用戶的粉絲多不多,關注對象總是比較少的。(當然如果你需要判斷的兩個人都是沒多少粉絲的話,獲取粉絲判斷關係也可以)

這裡給個例子:

i7sdream 是我,liu_johnny 是題主,可以看到下面輸出的是「已被關注」,也就是說我已經被你關注,而我並沒有關注你(要不就輸出互相關注了)。

你可以用這個函數自己試試別的用戶。

需要提示的是,這個函數需要的時間挺長的,因為需要獲取兩個人關注的用戶列表。

所以如果你現在有一堆用戶,需要獲取他們的關係的話,我建議你先把他們的關注者跑一遍存下來,然後再互相判斷關係,要不然每兩個用戶重新獲取一次,就重複花費了很多時間。

(PS:以後有問題/疑問可以盡量去項目的 Github 提 Issue,有歸檔而且可以讓有同樣問題的人更方便的找到答案)

以上。


推薦閱讀:

前嗅的這款數據採集軟體和像八爪魚這類的軟體有什麼區別,優勢在哪?
新浪微博數據抓取方法有哪些?
App中的數據可以用網路爬蟲抓取么?

TAG:社交網路 | Python | OAuth | 數據分析 | 數據抓取 |