我用 Python 爬取微信好友,最後發現一個大祕密

痴海發表於2019-02-28

前言

你身處的環境是什麼樣,你就會成為什麼樣的人。現在人們日常生活基本上離不開微信,但微信不單單是一個即時通訊軟體,微信更像是虛擬的現實世界。你所處的朋友圈是怎麼樣,慢慢你的思想也會變的怎麼樣。最近在學習 itchat,然後就寫了一個爬蟲,爬取了我所有的微信好友的資料。並對其中的一些資料進行分析,發現了一些很有趣的事。

微信好友爬蟲

此次的爬蟲程式用到的庫有很多,其中爬取微信資料用到的事 itchat。需要你先去下安裝。安裝完成以後,你就可以通過 itchat.login() 這個函式登陸你自己的微信。它回彈出一個網頁登陸的二維碼,你用手機掃描登陸即可。

然後通過 itchat.get_friends() 這個函式就可以獲取到自己好友的相關資訊,這些資訊是一個 json 資料返回。然後我們就可以根據這些返回的資訊,進行正則匹配抓取我們想要的資訊,在進行分析。

import itchat
itchat.login()
#爬取自己好友相關資訊, 返回一個json檔案
friends = itchat.get_friends(update=True)[0:]
複製程式碼

我的微信好友的男女比例

觀察返回的資料,很容易就可以根據關鍵字發現性別是存放在一個字典裡面,它的 key 是「Sex」,男性值為 1,女性為 2,其他是不明性別的(就是沒有填的)。

在程式碼裡我定義了一個函式 parse_friends() 通過一個 for 迴圈,把獲取到的資料通過 for 迴圈儲存到 text 字典裡。然後再通過 draw() 函式畫出柱狀圖。柱狀圖使用的是 plt 庫,之前也寫過一篇文章,感興趣的同學可以去檢視。

最後列印的結果:

不得不多說我微信的 1K 多的好友男女比列非常的不協調,男多女少啊。這讓我回想起以前高中一個班 50 個人,女生就 7 個,然後我們班的女生從此就有一個女團稱呼「七仙女」。

我的微信好友個性簽名的自定義詞雲圖

為了進一步分析我的好友大致都有什麼特徵,我把好友的個性簽名一起抓取,分析製作成詞雲。

個性簽名是儲存在 Signature 這個 key 中,由於有些簽名包含些表情,最初抓取會變成 emoji、span、class 等等這些無關的詞。所有需要先替換掉,另外,還有類似 <>/= 之類的符號,也需要寫個簡單的正則替換掉,再把所有拼起來,得到 text 字串。

得到的資料最後儲存到當前目錄名為「text.txt」文字中。

分析好友簽名的函式我定義成:parse_signature(),完整程式碼如下:

抓取整理了簽名的資料,接下來就是製作出詞雲。這裡使用的是 wordCloud 來進行詞雲的製作。之前的文章也有介紹過詞雲的製作,感興趣的同學可以檢視這篇文章。

詞雲的製作我定義了一個:draw_signature() 函式,完整程式碼如下

執行上面的程式碼後得到了如下的圖,由於好友數量比較多,我分別找了兩張圖製作出圖雲。

努力,奮鬥,世界,生活,自己。這些詞在我們 1K 多人的好友中出現的最多。大家都非常的優秀,都非常的上進。

我的簽名:人生必有痴,而有後成。現在的我痴迷於各種優秀的人,每天都在向他們學習。希望大家一生當中也有痴迷的一面。

需要完整的程式碼可以關注公眾號「痴海」,後臺回覆「程式碼」,即可領取。

我用 Python 爬取微信好友,最後發現一個大祕密


相關文章