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