爬取張佳瑋138w 知乎關注者 資料視覺化

2021-09-11 10:18:23 字數 3441 閱讀 6598

《data analysis & viz》

作為本專欄第一篇文章,先介紹下小背景,即為什麼爬知乎第一大v張公子的138w+關注者資訊?

其實之前也寫過不少小爬蟲,按照網上各種教程例項去練手,「不可避免」的爬過妹子圖、爬過豆瓣top250電影等等;也基於自身的想法,在浙大120周年校慶前,聽聞北美帝國大廈首次給大陸學校亮燈,於是爬取

2016-2023年官網上每日的亮燈圖並用python的pil庫做了幾個小logo,算是一名吃瓜群眾自發的慶賀行為;(更多**見於:

deserts-x 我的相簿-北美帝國大廈亮燈圖:zju_120 logo)

微博簽到資料點亮中國,於是想著可以爬取微博大明星、小鮮肉的粉絲的居住地,然後搞搞怎麼畫出全國乃至全球分布情況。但發現幾年前微博就限制只能檢視200左右粉絲數(具體忘了),蠻掃興的,於是將目光轉向了知乎......

而既然要爬,那就爬關注人數最多的張公子吧,資料量也大,這方面是之前小專案所不及的,此前也看過不少爬知乎資料與分析的文章,因此也想練練手,看看大量訪問與獲取資料時會不會遇到什麼封ip的反爬措施,以及資料視覺化能搞成什麼樣。

不過此文在爬蟲部分不做過多展開,看情況後續再另寫一文。思路如下:抓包獲取張佳瑋主頁

關注者api,然後改變**中offset引數為20的倍數,一直翻頁直到獲取138w+關注者資訊,其中返回的json資料主要有:關注者的暱稱、主頁id(即url_token)、性別、簽名、被關注人數等,也就是說需要訪問所有主頁id,才能獲取更多資訊(

個人主頁api:以黃繼新為例):居住地、所在行業、職業經歷、教育經歷、獲讚數、感謝數、收藏數等等。鑑於還不怎麼會多程序爬取,如果把所有id再爬一遍會非常耗時間,於是篩選被關注數100+的id,發現只剩了4.1w+,之後較完整提取了這部分的資訊,後續視覺化也多基於此。

大v總是少數的,而小透明到底有多少、分布情況如何呢?將關注人數劃分成不同區間,繪製成如下金字塔圖(本圖已於最近更新,增加餅圖後變成組合的圖):

作為乙隻小透明,在此過程中發現自己處於前2w的位置,即圖中紅色區域,還是蠻吃驚的。上文已提到100+關注就超過了134w的使用者,而1k+、1w+、10w+就越來越接近塔尖,越來越接近張公子的所在,看上圖10w+以上的區域,如同高聳入雲,渺然不可見,「亂山合沓,空翠爽肌,寂無人行,止有鳥道」,令小透明很是神往。

上公升之路雖然崎嶇,但也同樣說明只要多增幾個關注,就勝過了數以萬計的使用者,這對於有志於成為大v的人,或許能在艱難的前行之路上,靠此資料透露的資訊,拾得些許信心。

細看底部的區間,0關注有40.2w+,1-10關注有76.6w+,區分度已赫然形成,但小透明可能感受不出,那怕有幾百的關注,何嘗不會覺得自己依舊是個小透明呢?有誰會相信斬獲10人關注,就超過了100w+的使用者,資料能告知人經驗之外的事實,在此可見一斑。當然知乎大量使用者湧入且多數人並不產生優質或有趣的回答,也是一二原因。

繼續看100+以上的資料,底部佔比依舊明顯,塔尖依然很小。

接著對100+關注人群的性別組成進行分析,發現男女比例基本維持在2:1,與138w+使用者的男女比例差別不大。當然10w+關注由於人數較少,比例超過3:1,是否能得出男性在這方面更為優秀就不得而知了。

前文已多次提到10w+大v,那麼這190人裡到底都有誰呢?這裡以關注人數為權重,生成詞云如下:

大家上知乎的話應該也有關注一些大v,許多名字應該並不陌生,比如馬伯庸、動機在杭州、葛巾、朱炫、丁香醫生等等,當然也會發現並不是所有大v都關注了張公子,哪怕他是知乎第一人,目前已交出了3026個回答,135個知乎收錄回答的傲人成績(據說也是豆瓣和虎撲第一人)。

終於到了我最初開始這個專案時,最想獲取的的資訊了。雖然由於爬取效率而篩選掉了100關注以下的id共134w,資料量方面不如標題所示的那麼多,略有遺憾,但其實真的拿到4.1w+條較優質資料時,發現處理起來也並不容易。

比如這裡的居住地資訊,有亂填水星、火星、那美克星,也有填國家、省份、縣市、街道格式不一的,還有諸如老和山之類外行人不明白的「啞謎」等等,資料之臟令人頭疼,且純文字的資料又不像數字類可以篩選、排序,還沒想到好的方式應對。再者echarts官網雖然有不少可以套用的模板,但有很多地方的經緯度需要重新獲取,這樣就在資料處理和地圖上定位有兩處難題需要解決。

由於第一次處理這類資料並視覺化,第一次用echarts就打算畫這個酷炫的地圖,因此最終先縮小資料量,還是以1w+大v的資料來視覺化,目前先完成國內分布情況,以後看情況再擴大資料量和繪製全球分布情況。

其**現次數排名前幾的城市依次為:北京 360,上海 183,深圳 55,杭州 52,廣州 47,成都 26,南京 20......應該算是意料之中的。考慮到並不是每個人對這些點所代表的城市都熟悉,加上城市名,效果如下,重疊較為嚴重,顯示效果不夠好,仍需解決。

接下來分別對所在行業、職業經歷、教育經歷等進行分析,結果如下(注:使用者有多條職業經歷或教育經歷的,僅爬取了最新的一條資料):

學校方面幾乎全為985、211高校,當然拿得出手的會樂於寫上,略微差些的可能不會填寫,而且湧入使用者多了後,這類資料也就只是調侃知乎人人都是985高校,年薪百萬的點了。所在行業方面,網際網路遙遙領先,計算機軟體、金融、高等教育位居前四。

top20 公司中bat、網易、華為、小公尺科技、美團網以及谷歌、facebook、微軟等大廠都悉數在列。再看top20 職業裡除了各種名號的程式設計師、產品經理、運營等網際網路職業,創始人、ceo等佔據前排,不可謂不令人大驚從早到晚失色。

原本只知道博士可以提供資訊得到認證,知乎也會給予其回答更好的顯示途徑,使其更容易成長為大v,以此作為對高學歷人群、優質使用者的獎勵。

此次抓取的100+關注4.1w+條資料中有208條認證資訊。除卻各種專業的博士、博士後外,還有37家公司、機構,9條醫師,11條教授/講師/研究員,13條cfa、cpa持證人或工程師、建築師,以及28條其他類:副總裁、創始人、記者、律師、wcg2005-2006魔獸爭霸專案世界冠軍、職業自行車手、主持人、作家、歌手等等。看來還是有不少優質使用者可以後續去了解下的。

除了認證資訊外,優秀回答者這是鑑別某使用者是否為優質使用者,是否值得關注的乙個重要指標。包含張佳瑋在內,共有468位優秀回答者,涉及257個話題,共出現768人次優秀回答者標籤。

而所有優秀回答者貢獻的回答和知乎收錄回答情況如下:

最右上角的便是張佳瑋的貢獻情況,令人望塵莫及。也有不少使用者貢獻了上千個回答,可以說是非常高產。但大部分使用者回答數<1000,收錄數<50。密集區域放大後如圖:

有不少資料收錄回答為0,因為還不知道知乎優秀回答者的評判標準,所以此處還需進一步了解。另外這些資料點,對應的加上一些大v名字可能顯示起來能好,但一直在摸索,還不得要領。

本專案是個人第一次百萬級資料的爬取,當然由於爬取效率方面需要改進,所以詳細使用者資訊選擇性的只爬了100+關注人數共4.1w+的id。另外也是第一次資料視覺化,從完全不懂echarts的各種引數,硬剛配置項,到勉強獲得了上述還算能看的一些資料圖,不少地方還需進一步學習、改進,以求獲得更合乎要求的、理想的、自定義的視覺化圖。

另外,除卻上述資料外,還有點讚數、感謝數、收藏數、關注數和被關注數、簽名、個人簡介等等資料並未處理,但基本想要獲取的圖都得到了,算是完成了此專案,也學到了很多東西。

1 python 爬取小說

請求網頁鏈結 獲取頁面原始碼 r requests.get url,headers headers text doc pq r 獲取網頁的全部章節鏈結 這裡去掉了前面的最新章節部分 直接從第一章開始 div book detail nth child 2 選取的是第二個div的內容 links do...

1 蘇寧百萬級商品爬取 思路講解 類別爬取

蘇寧類別面 解析圖.png 通過圖可知,總共有n個類別,每個類別都是乙個div區塊,然後再繼續分解div區塊分析內容。我們要得到的是類別表,據圖所示我們可以分析得出類別表的結構應當樹形的。所以涉及的表應該是包含子節點和父節點的。初步設計圖如下 idpid code name url主鍵 父節點編碼 ...

Day1 Ajax資料爬取

一 渲染網頁 document.getelementbyid mydiv innerhtml xmlhttp.responsetext 這裡就是將id是mydiv的節點內部的html 更改為伺服器返回的內容了 6.2 ajax分析方法 1 在微博的頁面中,開啟審查元素中network,重新整理一下頁...