Python 使用itchat 获取微信好友信息并解析(性别 区域 头像 签名等)
目錄
- Itchat簡介
- 1. 登錄 獲取好友信息
- 2. 好友性別統計
- 3. 好友省份統計
- 4. 好友城市統計
- 5. 好友頭像獲取
- 6. 好友簽名分析
- 總結
Itchat簡介
itchat官網:https://itchat.readthedocs.io/zh/latest/
itchat是一個開源的微信個人號接口
使用這個接口可以完成獲取微信好友信息,發送信息,接收信息等操作
借此可以開發個人的微信機器人。
(目前發送信息等功能好像已被官方禁止)
現在我們只是用最基本的獲取好友信息功能 來得到微信好友信息 并進行初步的分析統計
1. 登錄 獲取好友信息
首先當然是要安裝這個開源包
pip install itchat只需要一條命令就可以進行微信的掃碼登錄
import itchat itchat.auto_login()掃碼后便會提示登陸了網頁版微信 (ps: 新的微信賬號貌似已經不支持網頁版登陸了。。。)
登錄之后便可以通過下面這條命令獲取最新的好友信息
這里的update參數是代表是否重新獲取最新信息 如果是False那么就會使用緩存信息
為了清楚地了解其內部數據結構 我們這里會將好友信息保存在本地 (效果同update=False一樣)
代碼如下:
此時我們將好友信息保存到了friends.json
我們可以查看一下里面的信息存儲結構:
根據上圖我們可以對好友的城市、省份、簽名、性別、頭像等進行統計分析
2. 好友性別統計
sex 代表著好友的性別 1:男 2:女 當然不能排除其它情況。。。0.0
def sex_analysis(friends):labels = ['男', '女', '其他']data = [0, 0, 0]# friends[0] 是自己的信息for friend in friends[1:]:sex = friend["Sex"]if sex == 1:data[0] += 1elif sex == 2:data[1] += 1else:data[2] += 1labels = [labels[i]+':'+str(data[i]) for i in range(len(labels))]plt.title("微信好友性別比例")plt.pie(data, labels=labels,autopct="%.2f%%")plt.savefig("sex.jpg")plt.show()我們可以使用matplotlib根據這個統計結果生成一個餅狀圖
3. 好友省份統計
我們將各省擁有的好友個數進行統計 并排序 取top10
這里會有特殊的空(’’)省份需要去除
同樣將結果使用plt呈現
根據這個明顯的省份分布 幾乎可以斷定。。該微信號是個浙江人
4. 好友城市統計
這個和省份統計基本一致
def city_analysis(friends):city_dict = defaultdict(int)for friend in friends[1:]:city = friend['City']city_dict[city] +=1city_dict.pop('')city_top10 = sorted(city_dict.items(),key=lambda x:x[1],reverse=True)[:10]city_name = [x[0] for x in city_top10]city_num = [x[1] for x in city_top10]plt.bar(city_name,city_num,width=0.5,align='center',color='#87CEFA')for i in range(len(city_num)):x = city_name[i]y = city_num[i]plt.text(x,y+1,'%s'%y,fontsize=10,ha='center')plt.ylabel("好友數量")plt.xlabel("城市")plt.title("各城市好友分布 TOP10")plt.savefig("city.jpg")plt.show()
分析上圖:
該微信號在杭紹兩城市 出生/工作
并在成都生活過一段時間
5. 好友頭像獲取
這個功能好像沒什么能分析的。。。看看好友的頭像是否非主流。。
這里需要注意
從緩存的friends.json好友信息中可以獲取頭像地址
但是下載頭像是需要重新登陸的
我們在這里繼續進行緩存 將頭像保存在 photos/文件夾內
get_photo:下載好友頭像圖片
photo_merge: 拼接好友頭像 生成一張大圖
注意: 為了讓拼接的圖片沒有黑邊 更加的好看
我們在拼接圖片時會舍棄掉一些圖片
假設我們有num張照片 sqrt(num) 取整 = n
我們會拼接n x n 大小的圖片 整張圖片大小為640x640 可以自由設定
每位好友的頭像大小(640/n x 640/n)
結果如下圖:
看上去挺壯觀。。。。
6. 好友簽名分析
這里我們會用到中文分詞工具 jieba:https://github.com/fxsjy/jieba
我們將每一個好友簽名 去除停用詞 (這里只是初步手動去除 不全面)
拼接后 使用結巴進行分詞
統計分詞后詞組的出現頻率
使用詞云(wordcloud)https://github.com/amueller/word_cloud 將這些詞組展現出來
頻率越高 詞越大
結果如下圖
總結
雖然只是獲取了最基礎的微信好友信息
但我們已經能夠從這些不起眼的數據中獲取到一些有用的信息
好友數量 好友性別比例 用戶生活城市等等
細思極恐0.0
那些并未開放 獲取不到的信息里 是否已經將我們展示地一覽無余
總結
以上是生活随笔為你收集整理的Python 使用itchat 获取微信好友信息并解析(性别 区域 头像 签名等)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通过路由器映射 配置 远程访问
- 下一篇: mysql 按照年龄段分组查询