1. 程式人生 > >我用 Python 爬取微信好友,最後發現一個大秘密

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

代碼 我們 同學 strong 分享 簽名 ast ron tps

前言

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

然後通過 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 庫,之前也寫過一篇文章「Python 制造出價值上萬的英語學習資料」,感興趣的同學可以去查看。

技術分享圖片

技術分享圖片

最後打印的結果:

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

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

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

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

得到的數據最後保存到當前目錄名為「text.txt」文本中。

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

抓取整理了簽名的數據,接下來就是制作出詞雲。這裏使用的是 wordCloud 來進行詞雲的制作。之前的文章也有介紹過詞雲的制作,感興趣的同學可以查看這篇文章「我眼中的科比,永遠的巨星」。

詞雲的制作我定義了一個:draw_signature() 函數,完整代碼如下

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

技術分享圖片

技術分享圖片

努力,奮鬥,世界,生活,自己。這些詞在我們 1K 多人的好友中出現的最多。大家都非常的優秀,都非常的上進。我想這也正是我為什麽每天都在努力學習的原因,環境真的非常的影響一個人。

完整的代碼我已上傳到 GitHub 上:

https://github.com/chihaiyishen/Python-Learning/tree/master/python%20%E7%88%AC%E8%99%AB/wechat

作者:癡海

轉載鏈接:https://news.html5.qq.com/share/9072422611354729272?url=http%3A%2F%2Fkuaibao.qq.com%2Fs%2F20180503G07JCV00&ch=060000&qbredirect=&share=true&sc_id=ICoTfhC

公眾號:51reboot運維開發

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