目前python的模块越来越多,也封装的越来越方便使用。本文介绍如何利用itchat获取微信好友信息。
首先这也是从网上学习得来的,只是加以练习和总结。
这是本文练习的出处:
https://github.com/KaiserW/wechat-friends-data/blob/master/wechat_analysis.ipynb
- 模块导入
首先本文代码用python3运行,要用pip3安装这些模块(pip3 install itchat),并导入
import itchat import numpy as np import pandas as pd from matplotlib import pyplot as plt from tqdm import tqdm import requests import base64 # 渲染好友分布地图 from pyecharts import Map import jieba from PIL import Image from wordcloud import WordCloud, ImageColorGenerator, STOPWORDS from matplotlib.font_manager import FontProperties
numpy和pandas是数据处理模块。
matplotlib,pyecharts是用来画图的,其中pyechart就是百度的echart的python模块。
jieba和worldcloud是用来组成词云。
FontProperties是用来显示中文字。
- itchat登陆微信
itchat.auto_login(hotReload=True)
第一次使用这个函数时,会生成一个登陆二维码,微信扫描即可登陆,hotReload可以自动登陆上次账号。
注意,没有绑定手机好的微信不让使用该登陆功能。
- 获取好友信息
itchat.send('测试消息发送', toUserName='filehelper')
这是发送测试消息给文件助手,如果要发送给好友,UserName不是微信号,也不是昵称,是一串很长的数字字母组合,本文代码可以获取。
friends = itchat.get_friends(update=True) friends_df = pd.DataFrame(friends)
获取并查看好友信息,将信息由字典格式转为DataFrame格式。
- 处理性别、省份、头像和签名
三个函数分别获取性别比例,省份分部,头像分析和签名词云。
get_sex(friends_df) get_provinces(friends_df) get_head(friends_df) get_signatures(friends_df)
这些具体步骤可以参考上面出处,有具体的step by step,不再重复。
这里提几点要注意的。
1. render渲染出html文件
map_wechat.render()
这句代码执行完后,项目下面会生成一个render.html文件,用浏览器打开会显示好友省份分部。但是第一次打开只有南海部分,是因为我们没有安装中国省份地图。
pip3 install echarts-china-provinces-pypkg
然后刷新网页就可以显示中国地图了。
2.中文字显示
默认标签和词云都不能显示中文,要导入中文字体才可以显示,一下就是方法:
## 设置font,标签可以显示中文 font = FontProperties(fname=r"./simhei.ttf", size=14) # size可不用指定
ax.set_xticklabels(labels, fontproperties=font)
my_wordcloud = WordCloud(background_color="white", max_words=500, mask=coloring, max_font_size=200, random_state=42, stopwords=stopwords, font_path="simhei.ttf").generate(word_space_split)
效果图:
这是文本代码:https://github.com/szhmery/itchat-project