開源一段代碼-微信好友分析
今天早上翻筆記的時候,發現了一份3個月前寫的代碼,當時是覺得好玩寫的,現在就分享出來給大家。代碼的github地址我已經放在了文章尾部,需要的童鞋可以自取。其實代碼邏輯相當簡單,當然,如果初學的童鞋看代碼可能有不明白的地方,我也專門錄制了一段半小時的視頻對代碼進行講解。

寫于3個月前的代碼
看完本文,你可以了解到:
- 一些可視化工具的使用(pyecharts)
- python圖片工具PIL庫的使用
- 自然語言處理工具包結巴分詞的使用
- 爬蟲的基礎知識
- 微信網頁api工具itchat的使用
好了,廢話不多說,直入正題:
先告訴大家這份代碼能干嘛——
- 統計好友的性別
- 統計好友的地域分布,并且可視化在地圖上展示
- 將好友的昵稱做成詞云
- 統計好友個性簽名中的高頻詞匯
- 將所有好友的頭像合并成一張大圖
- 微信自動發送與回復消息
- 擴展功能
1.統計好友性別

微信好友性別統計
以上就是二胖的微信好友啦,一共有306人,嗯,二胖的好友不多哈。其中男性占據60%,沒辦法,理工科學校的男生就是這樣,其他這一類人表示的是并未填寫性別信息的好友。
2.統計好友地域分布
第二個功能是統計你的微信好友在信息中填寫的個人位置信息,下圖是二胖的好友的位置分布:

條形圖
可以看到,二胖的好友中有很大一部分人在北京,是因為二胖大學在北京念書,現在也在北京工作。
當然,條形圖能形象地展示各個地區之間的人數差別,但是展示的信息并不全面,也不那么直觀,所以二胖又做了一個地圖的可視化,如下圖所示,顏色越暖代表這個地方的好友越多:

地圖可視化
3.將好友的昵稱做成詞云
我們和微信好友聊天的時候,看見的基本都是我們對他們的備注名,很好有人去關心他們的昵稱,說實在的,這么一統計才知道,其實好友的昵稱還真的挺有意思,各位要是感興趣可以跑一下試試。
由于這個詞云中含有較多的個人信息,所以我就不放在這里了。
4.統計好友個性簽名中的高頻詞匯
這個功能的原理就是對每個好友的個性簽名利用自然語言處理技術提取關鍵詞,然后按照詞頻來生成詞云,下面詞云中的關鍵詞個頭越大表示越多人使用,看來二胖的好友們說得最多是“自己”,“我們”。

個性簽名關鍵詞詞頻統計
5.將所有好友的頭像合并成一張大圖
這其實就是用程序將好友的頭像們下載下來,然后用PIL工具合成一張大圖,看起來比較有趣,如下圖就是二胖用部分好友的頭像做的一張頭像圖:
6.微信自動發送與回復消息
這里的自動接收消息,二胖只做了一個簡單的demo,可以先給大家看看:
其中“機器人”,就是當前程序運行的微信號,一段簡單的聊天:

自動回復消息
我們可以在程序中設定好關鍵詞,然后當發送消息***關鍵詞的時候就可以回復相應的語句。當然這只是簡單的示范,大家可以根據自己的需求發送相應的消息。
比如逢年過節可以用程序群發祝福消息,那和用微信本身群發有什么區別呢,區別就在于,程序可以個性化發送消息。
舉個例子:比如新年來了,你要給大家發送新年祝賀。
如果你直接發送“年年都有今日,歲歲都有今朝,祝你新年快樂。”對面接收人肯定會想到你是群發的。
那用程序有什么不同呢,程序在遍歷你的微信好友時,可以獲取他的昵稱、備注等信息。在發送祝福的時候,程序可以加上昵稱、姓名等信息,還可以隨機發送詞庫中的祝福語。
以上祝福可以變成:“hi,鐵柱,年年都有今日,歲歲都有今朝,祝你新年快樂”。當然這都是后話了。
除此之外,對于一些做銷售相關工作的童鞋,這個功能相對更有用。因為不同的客戶可能會問到很多相似的問題,那么把這些高頻的問題回答寫進程序就可以實現自動回答了。
目前網絡上也有這樣的服務,不過二胖認為它們存在問題,1是服務需要付費,2是把微信運行在別人的平臺上不安全。
7.擴展
所謂擴展,就是將個人微信做成一個服務,通過在程序中請求其他服務的api而獲得相應的信息,比如獲取一些實時消息。
舉個小例子:二胖前段時間在玩一款叫萊茨狗的游戲,很簡單,就是用戶通過一定虛擬積分在一個平臺上買賣虛擬寵物“萊茨狗”,那么當有低價狗出現的時候怎么***時間知道呢?
答案就是寫個程序進行監控,沒錯,只要有賣家拋狗,那么只要價格和等級符合自己定的策略,就可以通過計算機篩選出這只狗,然后把交易鏈接發出來。可是二胖也不能一直坐在電腦面前等啊,所以二胖選擇讓程序將信息直接發送到微信,這樣二胖只要帶著手機就能實時接收交易數據了,可以看看下面的小視頻:
左邊是二胖的手機,右邊是電腦屏幕,顯示的是實時交易數據。只要右邊的交易數據符合我的策略,交易鏈接就會通過微信發送給我,當然二胖現在早已不玩這個游戲啦。
玩股票的朋友也可以用這個方法監控股票哦。
放一張之前的截圖:5月10日,獲取到的符合策略的狗狗。

5月萬游戲的推送消息
其實原理很簡單,利用的就是微信web端的api,來實現微信好友信息的獲取、信息的收發以及拿到微信好友信息之后的一些分析操作。

微信網頁版
流程為:
- 獲取好友信息
- 分析好友信息
- 通過api收發好友信息
由于文本闡述不清,所以就看視頻吧,如果你有時間,請現在用電腦打開觀看,我相信你點了收藏之后再次打開的概率就很低了,高清視頻可以在公眾號后臺回復:微信好友
即可獲取。

github代碼
github地址:https://github.com/yangxuanxc/wechat_friends