下面我們來看看Pythoner志朋的爬蟲實(shí)驗(yàn)。
一、使用的技術(shù)棧:
爬蟲:python27 +requests+json+bs4+time
分析工具: ELK套件
開發(fā)工具:pycharm
二、數(shù)據(jù)成果
爬取了知乎部分的用戶數(shù)據(jù)信息。
三、簡(jiǎn)單的可視化分析
1.性別分布
0 綠色代表的是男性 ^ . ^ ——1代表的是女性———— -1 性別不確定
可見知乎的用戶男性頗多。
2.粉絲最多的top30
粉絲最多的前三十名:依次是張佳瑋、李開復(fù)、黃繼新等等,去知乎上查這些人,也差不多這個(gè)排名,說明爬取的數(shù)據(jù)具有一定的說服力。
3.寫文章最多的top30
四、爬蟲架構(gòu)
爬蟲架構(gòu)圖如下:
說明:
選擇一個(gè)活躍的用戶(比如李開復(fù))的url作為入口url.并將已爬取的url存在set中。
抓取內(nèi)容,并解析該用戶的關(guān)注的用戶的列表url,添加這些url到另一個(gè)set中,并用已爬取的url作為過濾。
解析該用戶的個(gè)人信息,并存取到本地磁盤。
logstash取實(shí)時(shí)的獲取本地磁盤的用戶數(shù)據(jù),并給elsticsearch
kibana和elasticsearch配合,將數(shù)據(jù)轉(zhuǎn)換成用戶友好的可視化圖形。
五.編碼
爬取一個(gè)url:
解析內(nèi)容:
存本地文件:
代碼說明:
需要修改獲取requests請(qǐng)求頭的authorization。
需要修改你的文件存儲(chǔ)路徑。
源碼下載:https://github.com/forezp/ZhihuSpiderMan,記得star哦!
六.如何獲取authorization
打開chorme,打開https://www.zhihu.com/,
登陸,首頁隨便找個(gè)用戶,進(jìn)入他的個(gè)人主頁,F(xiàn)12(或鼠標(biāo)右鍵,點(diǎn)檢查)
點(diǎn)擊關(guān)注,刷新頁面,見圖:
七、可改進(jìn)的地方
可增加線程池,提高爬蟲效率
存儲(chǔ)url的時(shí)候我才用的set(),并且采用緩存策略,最多只存2000個(gè)url,防止內(nèi)存不夠,其實(shí)可以存在redis中。
存儲(chǔ)爬取后的用戶我說采取的是本地文件的方式,更好的方式應(yīng)該是存在mongodb中。
對(duì)爬取的用戶應(yīng)該有一個(gè)信息的過濾,比如用戶的粉絲數(shù)需要大與100或者參與話題數(shù)大于10等才存儲(chǔ)。防止抓取了過多的僵尸用戶。
八.關(guān)于ELK套件
關(guān)于elk的套件安裝就不討論了,具體見官網(wǎng)就行了。網(wǎng)站:https://www.elastic.co/
另外logstash的配置文件如下:
九、結(jié)語
從爬取的用戶數(shù)據(jù)可分析的地方很多,比如地域、學(xué)歷、年齡等等,我就不一一列舉了。
另外,我覺得爬蟲是一件非常有意思的事情,在這個(gè)內(nèi)容消費(fèi)升級(jí)的年代,如何在廣闊的互聯(lián)網(wǎng)的數(shù)據(jù)海洋中挖掘有價(jià)值的數(shù)據(jù),是一件值得思考和需不斷踐行的事情。
-
互聯(lián)網(wǎng)
+關(guān)注
關(guān)注
54文章
11076瀏覽量
102631 -
python
+關(guān)注
關(guān)注
55文章
4773瀏覽量
84385
原文標(biāo)題:碉堡了!一小時(shí)爬取百萬知乎用戶信息的Python神器曝光
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論