爬取了知乎57萬用戶信息,並做了簡單的可視化分析

網絡爬蟲 可視化 JSON PyCharm 青峰科技 2017-04-05

一、使用的技術棧:

  • 爬蟲:python27 +requests+json+bs4+time

  • 分析工具: ELK套件

  • 開發工具:pycharm

二、數據成果

爬取了573347條數據,在Python代碼中我並沒有採取線程池,而是採用了開起10個main()方法去抓取,即10個進程,歷時4個小時,爬取了57w+數據。

爬取了知乎57萬用戶信息,並做了簡單的可視化分析

三、簡單的可視化分析

1.性別分佈

  • 0 綠色代表的是男性 ^ . ^

  • 1 代表的是女性

  • -1 性別不確定

可見知乎的用戶男性頗多。

爬取了知乎57萬用戶信息,並做了簡單的可視化分析

2.粉絲最多的top30

粉絲最多的前三十名:依次是張佳瑋、李開復、黃繼新等等,去知乎上查這些人,也差不多這個排名,說明爬取的數據具有一定的說服力。

爬取了知乎57萬用戶信息,並做了簡單的可視化分析

3.寫文章最多的top30

爬取了知乎57萬用戶信息,並做了簡單的可視化分析

4.知乎用戶寫文章篇數人數分佈

不在知乎上寫文章的佔到了45w,差不多90%吧,說明知乎用戶大多數都是看文章,看回答,內容生產者只有10%。

爬取了知乎57萬用戶信息,並做了簡單的可視化分析

四、爬蟲架構

爬蟲架構圖如下:

爬取了知乎57萬用戶信息,並做了簡單的可視化分析

說明:

  • 選擇一個活躍的用戶(比如李開復)的url作為入口url.並將已爬取的url存在set中。

  • 抓取內容,並解析該用戶的關注的用戶的列表url,添加這些url到另一個set中,並用已爬取的url作為過濾。

  • 解析該用戶的個人信息,並存取到本地磁盤。

  • logstash取實時的獲取本地磁盤的用戶數據,並給elsticsearch

  • kibana和elasticsearch配合,將數據轉換成用戶友好的可視化圖形。

五.編碼

爬取一個url:

def download(url):

解析內容:

def parse(response):
def save(url_token, strs):

代碼說明:

* 需要修改獲取requests請求頭的authorization。

* 需要修改你的文件存儲路徑。

源碼下載:點擊這裡,記得star哦!

六.如何獲取authorization

  • 打開chorme,打開https://www.zhihu.com/,

  • 登陸,首頁隨便找個用戶,進入他的個人主頁,F12(或鼠標右鍵,點檢查)

  • 點擊關注,刷新頁面,見圖:

爬取了知乎57萬用戶信息,並做了簡單的可視化分析

七、可改進的地方

  • 可增加線程池,提高爬蟲效率

  • 存儲url的時候我才用的set(),並且採用緩存策略,最多隻存2000個url,防止內存不夠,其實可以存在redis中。

  • 存儲爬取後的用戶我說採取的是本地文件的方式,更好的方式應該是存在mongodb中。

  • 對爬取的用戶應該有一個信息的過濾,比如用戶的粉絲數需要大與100或者參與話題數大於10等才存儲。防止抓取了過多的殭屍用戶。

八.關於ELK套件

關於elk的套件安裝就不討論了,具體見官網就行了。網站:https://www.elastic.co/

另外logstash的配置文件如下:

input { # For detail config for log4j as input,

九、結語

從爬取的57萬用戶數據可分析的地方很多,比如地域、學歷、年齡等等,我就不一一列舉了。另外,我覺得爬蟲是一件非常有意思的事情,在這個內容消費升級的年代,如何在廣闊的互聯網的數據海洋中挖掘有價值的數據,是一件值得思考和需不斷踐行的事情。

相關推薦

推薦中...