爬取張佳瑋138萬知乎關注者:數據可視化

寫在前面

本文寫於一個月前,由於當時兩次申請知乎專欄都沒有成功,於是先首發於簡書:《爬取張佳瑋138w+知乎關注者:數據可視化》,並以文章的形式發在知乎,沒多少人看到。前幾天在@量子數據 寫的《50行python爬蟲代碼, 帶你正確打開知乎新世界!》下面留言提到了我的文章,才算多了幾十人點贊,於是帶著幾篇作品重新申請專欄終於成功,接下來會陸續將幾篇文章搬運進來。

聲明

轉載需告知,並標明作者和出處。本項目僅為個人練手,若有冒犯張公子或其他人之處,在此先致以歉意,爬取的數據不做公開。另外時間已過去一個月,關注了張公子的人數已經變為141w+,很多數據也有有所變化,請批判性地看待可視化結果。

一、前言

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

其實之前也寫過不少小爬蟲,按照網上各種教程實例去練手,「不可避免」的爬過妹子圖、爬過豆瓣Top250電影等等;也基於自身的想法,在浙大120周年校慶前,聽聞北美帝國大廈首次給大陸學校亮燈,於是爬取2016-2017年官網上每日的亮燈圖並用python的PIL庫做了幾個小logo,算是一名吃瓜群眾自發的慶賀行為;(更多照片見於:Deserts-X 我的相冊-北美帝國大廈亮燈圖:ZJU_120 logo)

也因為喜歡魯迅的作品,爬過在線魯迅全集的全部文章標題和鏈接;另外聽說太祖的某卷書是禁書,於是順帶也爬了遍毛選;還幫老同學在某票據網站下線前爬了大部分機構、人員信息,說是蠻值錢,然而也還在留著落灰......

再是知道百度Echarts開源的可視化網站裡面的圖很酷炫,比如使我著迷的:微博簽到數據點亮中國,於是想著可以爬取微博大明星、小鮮肉的粉絲的居住地,然後搞搞怎麼畫出全國乃至全球分布情況。但發現幾年前微博就限制只能查看200左右粉絲數(具體忘了),蠻掃興的,於是將目光轉向了知乎......

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

不過此文在爬虫部分不做過多展開,看情況後續再另寫一文。思路如下:抓包獲取張佳瑋主頁關注者api,然後改變網址中offset參數為20的倍數,一直翻頁直到獲取138w+關注者信息,其中返回的json數據主要有:關注者的昵稱、主頁id(即url_token)、性別、簽名、被關注人數等,也就是說需要訪問所有主頁id,才能獲取更多信息(個人主頁api:以黃繼新為例):居住地、所在行業、職業經歷、教育經歷、獲贊數、感謝數、收藏數等等。鑒於還不怎麼會多進程爬取,如果把所有id再爬一遍會非常耗時間,於是篩選被關注數100+的id,發現只剩了4.1w+,之後較完整提取了這部分的信息,後續可視化也多基於此。

二、數據可視化

1、關注人數

大V總是少數的,而小透明到底有多少、分布情況如何呢?將關注人數劃分成不同區間,繪製成如下金字塔圖:

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

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

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

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

2、性別情況

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

3、10w+大V

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

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

4、居住地分布

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

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

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

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

5、Top20 系列

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

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

Top20 公司中BAT、網易、華為、小米科技、美團網以及谷歌、Facebook、微軟等大廠都悉數在列。再看Top20 職業里除了各種名號的程序員、產品經理、運營等互聯網職業,創始人、CEO等佔據前排,不可謂不令人大驚從早到晚失色。

6、認證信息

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

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

7、優秀回答者

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

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

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

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

三、小結

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

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


推薦閱讀:

python爬蟲之圖片下載APP1.0
Python3如何將圖片保存到本地?
自學python3的爬蟲,但是網上普遍是python2的書,想問下有沒有好的爬蟲的python3書?
爬取的數據怎麼保存為圖片?

TAG:数据可视化 | python爬虫 | ECharts |