目前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可以自动登陆上次账号。

注意,没有绑定手机好的微信不让使用该登陆功能。

  1. 获取好友信息
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)

 

效果图:

sex

provinces

head

signature

这是文本代码:https://github.com/szhmery/itchat-project

 

转载于:https://my.oschina.net/u/3784241/blog/1831398

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐