你身處的環境是什麼樣,你就會成爲何樣的人。如今人們平常生活基本上離不開微信,但微信不僅僅是一個即時通信軟件,微信更像是虛擬的現實世界。你所處的朋友圈是怎麼樣,慢慢你的思想也會變的怎麼樣。最近在學習 itchat,而後就寫了一個爬蟲,爬取了我全部的微信好友的數據。並對其中的一些數據進行分析,發現了一些頗有趣的事。json
這次的爬蟲程序用到的庫有不少,其中爬取微信數據用到的事 itchat。須要你先去下安裝。安裝完成之後,你就能夠經過 itchat.login() 這個函數登錄你本身的微信。它回彈出一個網頁登錄的二維碼,你用手機掃描登錄便可。bash
而後經過 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 庫,以前也寫過一篇文章,感興趣的同窗能夠去查看。學習
最後打印的結果:spa
不得很少說我微信的 1K 多的好友男女比列很是的不協調,男多女少啊。這讓我回想起之前高中一個班 50 我的,女生就 7 個,而後咱們班的女生今後就有一個女團稱呼「七仙女」。3d
爲了進一步分析個人好友大體都有什麼特徵,我把好友的個性簽名一塊兒抓取,分析製做成詞雲。code
個性簽名是保存在 Signature 這個 key 中,因爲有些簽名包含些表情,最初抓取會變成 emoji、span、class 等等這些無關的詞。全部須要先替換掉,另外,還有相似 <>/= 之類的符號,也須要寫個簡單的正則替換掉,再把全部拼起來,獲得 text 字串。cdn
獲得的數據最後保存到當前目錄名爲「text.txt」文本中。blog
分析好友簽名的函數我定義成:parse_signature(),完整代碼以下:
抓取整理了簽名的數據,接下來就是製做出詞雲。這裏使用的是 wordCloud 來進行詞雲的製做。以前的文章也有介紹過詞雲的製做,感興趣的同窗能夠查看這篇文章。
詞雲的製做我定義了一個:draw_signature() 函數,完整代碼以下
運行上面的代碼後獲得了以下的圖,因爲好友數量比較多,我分別找了兩張圖製做出圖雲。
努力,奮鬥,世界,生活,本身。這些詞在咱們 1K 多人的好友中出現的最多。你們都很是的優秀,都很是的上進。
個人簽名:人生必有癡,而有後成。如今的我癡迷於各類優秀的人,天天都在向他們學習。但願你們一輩子當中也有癡迷的一面。
須要完整的代碼能夠關注公衆號「癡海」,後臺回覆「代碼」,便可領取。