碉堡了!一小時爬取百萬知乎用戶信息的Python神器曝光

本文轉載自簡書,由馬哥教育Python運維班3期學員推薦,原文作者為志朋,經小編編輯而成,如有漏洞,歡迎指正,并最后致謝作者的辛苦付出。

知乎是一個真實的網絡問答社區,社區氛圍友好與理性,連接各行各業的精英。用戶分享著彼此的專業知識、經驗和見解,為中文互聯網源源不斷地提供高質量的信息。與此同時,知乎也是由Python開發而成,有許多的Python愛好者都愿意用知乎做一些爬蟲實驗。

下面我們來看看Pythoner志朋的爬蟲實驗。


一、使用的技術棧:

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

分析工具: ELK套件

開發工具:pycharm

二、數據成果

爬取了知乎部分的用戶數據信息。

三、簡單的可視化分析

1.性別分布

0 綠色代表的是男性 ^ . ^ ——1代表的是女性———— ?-1 性別不確定

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

碉堡了!一小時爬取百萬知乎用戶信息的Python神器曝光

2.粉絲最多的top30

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

碉堡了!一小時爬取百萬知乎用戶信息的Python神器曝光

3.寫文章最多的top30

碉堡了!一小時爬取百萬知乎用戶信息的Python神器曝光

四、爬蟲架構

爬蟲架構圖如下:

碉堡了!一小時爬取百萬知乎用戶信息的Python神器曝光

說明:

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

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

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

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

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

五.編碼

爬取一個url:

碉堡了!一小時爬取百萬知乎用戶信息的Python神器曝光

解析內容:

碉堡了!一小時爬取百萬知乎用戶信息的Python神器曝光

存本地文件:

碉堡了!一小時爬取百萬知乎用戶信息的Python神器曝光

代碼說明:

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

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

源碼下載:https://github.com/forezp/ZhihuSpiderMan,記得star哦!

六.如何獲取authorization

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

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

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

碉堡了!一小時爬取百萬知乎用戶信息的Python神器曝光

七、可改進的地方

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

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

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

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

八.關于ELK套件

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

另外logstash的配置文件如下:

碉堡了!一小時爬取百萬知乎用戶信息的Python神器曝光

九、結語

從爬取的用戶數據可分析的地方很多,比如地域、學歷、年齡等等,我就不一一列舉了。

另外,我覺得爬蟲是一件非常有意思的事情,在這個內容消費升級的年代,如何在廣闊的互聯網的數據海洋中挖掘有價值的數據,是一件值得思考和需不斷踐行的事情。

最后,本文僅用作交流學習,一切數據歸知乎所有。

相關新聞

聯系我們

400-080-6560

在線咨詢:點擊這里給我發消息

郵件:[email protected]

工作時間:周一至周日,09:00-18:30

QR code
云南快乐10分开奖直播