用 Python 分析你的關注者情況(上)

首發於我的 博客。

使用 @秦淵 大神的 zhihu API 來分析指定知乎用戶的關注者情況,或者說這篇是 zhihu API 的偽使用教程。這篇的代碼也收錄在 tricks 中,感興趣的同學可以來點個 star。

zhihu API 是有回我搜爬蟲教程的時候看到的,對我這樣一個完全不會爬蟲的傢伙來說,真是幫了大忙。star 之後一直也沒怎麼用過,剛好前幾天被一個「三零號」噴,於是就順便看了下自己的 800 多個關注者,寫了個小腳本來分析一下。

腳本邏輯

整個腳本的邏輯很簡單:先用 zhihu API 抓取我的關注者列表,根據這份名單去抓取關注者的具體信息,然後保存為 txt 文件,最後根據數據來做分析。而這一篇,就先說到獲取數據並保存。

配置 cookie

__author__ = ipreachernnimport zhihuapi as apinnwith open(cookie) as f:n api.cookie(f.read())n

這裡在第一次使用的時候,要先配置 cookie,具體的配置方式看 文檔 的 Quich Start。

Note that you must set cookie before sending any HTTP request. In order to set cookie correctly, you should:

  • Sign in with your zhihu account.
  • Open Chrome DevTools (or substitutes with other browsers) and navigate to Network panel.
  • Select a valid request (a request with host be 知乎 - 與世界分享你的知識、經驗和見解), and copy its Cookie value in Request Headers.
  • DONOT use document.cookie since some cookie values are httponly.

拉取關注者的昵稱和個性域名

r1 = []nr2 = []nr5 = []nn# 拉取關注者的昵稱和個性域名,page 根據自己關注者頁數確定ndef followers(me, page):n for i in range(page): n data = api.user(me).followers(offset=(20 * i))n for j in range(len(data)):n r1.append(data[j][name]) # 關注者的昵稱n r2.append(data[j][url_token]) # 關注者的個性域名n

隨後是拉取關注者的昵稱和個性域名,介面每次只能獲取 20 個,秦淵大神說「嘗試的結果是一次最多可以拿到30個用戶」。不過一次獲取 20 個的話,剛好就是每一頁的關注者人數,所以只要數一下自己有多少頁關注者就行了。

分行列印關注者的昵稱和個性域名

# 分行列印關注者的昵稱和個性域名ndef show(r):n for k in range(len(r1)):n s = (r[k] + n)n print(s)n

這個就不用多說了,只是為了一個直觀的展現。

拉取並列印關注者的基本信息

# 拉取並列印關注者的基本信息,包括序號及其個性域名、昵稱、贊同數、感謝數、關注人數ndef ff():n for i in range(len(r2)):n r3 = api.user(r2[i]).detail()n r4 = [i, r3[urlToken], r3[name], r3[voteupCount], r3[thankedCount], r3[followerCount]]n r5.append(r4)n print(r4)n #print(r5)n

這就就根據之前拉取的關注者的個性域名,再去拉取並列印關注者的基本信息。這裡每拉取一位關注者的信息,就列印出來——每拉取一份數據目測大概需要一秒左右,所以純粹是彌補視覺上的空檔。

將關注者的基本信息保存為 txt 文件

# 將關注者的基本信息保存為 txt 文件 ndef txt(r):n f = open(r.txt,w)n f.write(str(r))n f.close()n

這是為了之後方便分析數據,txt 格式也單純是順手這麼寫了而已,大家也可以換成其他格式。

腳本的使用

if __name__ == __main__:n me = ipreachern page = 41n followers(me, page)n #show(r1)n #show(r2)n ff()n txt(r5)n

這個腳本可以直接用,只需要把最後的 me 和 page 這兩條改成自己的就行了。

源碼地址:ipreacher/tricks/zhihu/

還是挺好玩的,下一篇再寫數據分析。

推薦閱讀:

用 Python 玩轉 Facebook 數據
某測試模擬器性能優化-從系統角度思考問題
關於如何學習編程,這裡有兩個故事
GeoPython,用於地質學的日常工作的 Python 工具集
小說人物關係的可視化

TAG:Python | 知乎 | GitHub |