python—图解你的好友分布情况
- 2019 年 10 月 8 日
- 笔记
很久之前做了查看微信的好友分布,但是碍于当时的数据可视化有一个巨坑,网上的教程都是互相转发,互相复制的,最后并不能实现操作,这次想要来填坑,所以记录一下。
关于用python来操作微信的库我们这里用的是wxpy,因为它是基于itchat的,有着微信登录,收发消息,搜索好友,数据统计等等的功能,相比itchat的一个好处就是不用重复扫码。
如果你用itchat去操作微信的话,你每次运行程序都要去扫二维码登录微信网页版,但是wxpy就不用,它将登录信息缓存了,可以不用每次运行程序时扫二维码。
首先第一步,给自己的电脑安装相关的库,这里要安装的是wxpy库。
这里可以直接pip install wxpy,即可,如果你用pycharm,也用了虚拟的环境的话,就在pycharm里的setting->project interpreter里去安装wxpy。
登录微信:
from wxpy import * #导入wxpy库 bot = Bot(cache_path=True) #登录,并且有缓存为true
简单的获取新消息,输出并发一份给文件传输助手:

bot.file_helper就是文件传输助手,
bot.self就是你自己的微信号,将消息发送给你自己。
这个recv_send_msg其实接收到消息后回复的函数,但是我们并没有返回值,所以就没有回复了。如果夸张一点这样就差不多可以知道别人撤回的消息内容,因为他会在你的程序下打印,并且会发送一份内容给你的文件传输助手,或者你自己的微信号。
获取指定微信号的消息:

获取你微信号的男女比例:

这里用到的数据可视化我用的是matplotlib,如果没有使用过的话,还是需要去下载一下库。
这里就是填坑的地方了。
获取微信好友的省份分布图:
from wxpy import * bot = Bot(cache_path=True) friends = bot.friends() area = {} for f in friends: if f.province not in area: area[f.province] = 1 else: area[f.province]+=1 attr = area.keys() value = area.values()
以上是就是获取的省份的数据了,以及省份拥有的人数

接着就是在地图上显示出来,看了一下百度上的教程,百分之90的都是0.5版本的pycharts,但是我们用pip安装的时候是最新版v1.0版本的pyecharts,因此百度上的方法都是不适用的。

在这里你要查看一下你的python版本和pyecharts的版本,然后决定用的是v0.5版本的还是v1版本
一般python3.6以上的版本都是v1版本的pycharts。
下面是v1版本的省份显示的完整代码。
from wxpy import * bot = Bot(cache_path=True) friends = bot.friends() area = {} for f in friends: if f.province not in area: area[f.province] = 1 else: area[f.province]+=1 attr = area.keys() value = area.values() from pyecharts import options as opts from pyecharts.charts import Map print(area) def map_base() -> Map: c = ( Map() .add("人数", [list(z) for z in zip(attr, value)], "china") .set_global_opts(title_opts=opts.TitleOpts(title="省份分布人数")) ) return c c = map_base() c.render()
这个只是基础的显示,还有更多的细节没有添加,就直接给图加入两个数据,attr和value,然后修改一下map的名称而已的。如果想做更加灵活的操作可以去pyecharts的官网,获取相应的方法,很容易上手,十分便利。
上面代码运行完后,你的项目文件夹下会出现一个html文件

打开即可看到结果

这样子就可以看到你的微信好友在全国的省份分布,并且知道分布的人数。
pyecharts的官网:
https://pyecharts.org/#/zh-cn/intro