查看原文
其他

开源一段代码-微信好友分析

二胖 大数据前沿 2019-02-24

今天早上翻笔记的时候,发现了一份3个月前写的代码,当时是觉得好玩写的,现在就分享出来给大家。代码的github地址我已经放在了文章尾部,需要的童鞋可以自取。其实代码逻辑相当简单,当然,如果初学的童鞋看代码可能有不明白的地方,我也专门录制了一段半小时的视频对代码进行讲解。

看完本文,你可以了解到:

  1. 一些可视化工具的使用(pyecharts)

  2. python图片工具PIL库的使用

  3. 自然语言处理工具包结巴分词的使用

  4. 爬虫的基础知识

  5. 微信网页api工具itchat的使用

先告诉大家这份代码能干嘛——

  1. 统计好友的性别

  2. 统计好友的地域分布,并且可视化在地图上展示

  3. 将好友的昵称做成词云

  4. 统计好友个性签名中的高频词汇

  5. 将所有好友的头像合并成一张大图

  6. 微信自动发送与回复消息

  7. 扩展功能

好了,废话不多说,直入正题:

功能展示

下面先展示一下具体的功能,这里就用二胖自己的微信来进行展示啦。

01

统计好友性别

以上就是二胖的微信好友啦,一共有306人,嗯,二胖的好友不多。其中男性占据60%,没办法,理工科学校的男生就是这样,其他这一类人表示的是并未填写性别信息的好友。


02

统计好友地域分布

第二个功能是统计你的微信好友在信息中填写的个人位置信息,下图是二胖的好友的位置分布:

可以看到,二胖的好友中有很大一部分人在北京,是因为二胖大学在北京念书,现在也在北京工作。

当然,条形图能形象地展示各个地区之间的人数差别,但是展示的信息并不全面,也不那么直观,所以二胖又做了一个地图的可视化,如下图所示:颜色越暖代表这个地方的好友越多:


03

将好友的昵称做成词云

我们和微信好友聊天的时候,看见的基本都是我们对他们的备注名,很好有人去关心他们的昵称,说实在的,这么一统计才知道,其实好友的昵称还真的挺有意思,各位要是感兴趣可以跑一下试试。

由于这个词云中含有较多的个人信息,所以我就不放在这里了。


04

统计好友个性签名中的高频词汇

这个功能的原理就是对每个好友的个性签名利用自然语言处理技术提取关键词,然后按照词频来生成词云,下面词云中的关键词个头越大表示越多人使用,看来二胖的好友们说得最多是“自己”,“我们”。


05

将所有好友的头像合并成一张大图

这其实就是用程序将好友的头像们下载下来,然后用PIL工具合成一张大图,看起来比较有趣,如下图就是二胖用部分好友的头像做的一张头像图:


06

微信自动发送与回复消息

这里的自动接收消息,二胖只做了一个简单的demo,可以先给大家看看:

其中“机器人”,就是当前程序运行的微信号,一段简单的聊天:

我们可以在程序中设定好关键词,然后当发送消息命中关键词的时候就可以回复相应的语句。当然这只是简单的示范,大家可以根据自己的需求发送相应的消息。

比如逢年过节可以用程序群发祝福消息,那和用微信本身群发有什么区别呢,区别就在于,程序可以个性化发送消息。

举个例子:比如新年来了,你要给大家发送新年祝贺。

如果你直接发送“年年都有今日,岁岁都有今朝,祝你新年快乐。”对面接收人肯定会想到你是群发的。

那用程序有什么不同呢,程序在遍历你的微信好友时,可以获取他的昵称、备注等信息。在发送祝福的时候,程序可以加上昵称、姓名等信息,还可以随机发送词库中的祝福语。

以上祝福可以变成:“hi,铁柱,年年都有今日,岁岁都有今朝,祝你新年快乐”。当然这都是后话了。

除此之外,对于一些做销售相关工作的童鞋,这个功能相对更有用。因为不同的客户可能会问到很多相似的问题,那么把这些高频的问题回答写进程序就可以实现自动回答了。

目前网络上也有这样的服务,不过二胖认为它们存在问题,1是服务需要付费,2是把微信运行在别人的平台上不安全。


07

扩展

所谓扩展,就是将个人微信做成一个服务,通过在程序中请求其他服务的api而获得相应的信息,比如获取一些实时消息。

举个小例子:二胖前段时间在玩一款叫莱茨狗的游戏,很简单,就是用户通过一定虚拟积分在一个平台上买卖虚拟宠物“莱茨狗”,那么当有低价狗出现的时候怎么第一时间知道呢?

答案就是写个程序进行监控,没错,只要有卖家抛狗,那么只要价格和等级符合自己定的策略,就可以通过计算机筛选出这只狗,然后把交易链接发出来。可是二胖也不能一直坐在电脑面前等啊,所以二胖选择让程序将信息直接发送到微信,这样二胖只要带着手机就能实时接收交易数据了,可以看看下面的小视频:

https://v.qq.com/txp/iframe/player.html?vid=t0674wpeucv&width=500&height=375&auto=0

左边是二胖的手机,右边是电脑屏幕,显示的是实时交易数据。只要右边的交易数据符合我的策略,交易链接就会通过微信发送给我,当然二胖现在早已不玩这个游戏啦。

玩股票的朋友也可以用这个方法监控股票哦。

放一张之前的截图:5月10日,获取到的符合策略的狗狗。


代码实现

其实原理很简单,利用的就是微信web端的api,来实现微信好友信息的获取、信息的收发以及拿到微信好友信息之后的一些分析操作。

流程为:

  1. 获取好友信息

  2. 分析好友信息

  3. 通过api收发好友信息

由于文本阐述不清,所以就看视频吧,如果你有时间,请现在用电脑打开观看,我相信你点了收藏之后再次打开的概率就很低了(由于公众号限制,所以视频不清晰,高清视频可以点击下面链接查看,也可以可以在公众号后台回复【微信好友】 下载原文件视频)

https://v.qq.com/txp/iframe/player.html?vid=b0674dcd3hn&width=500&height=375&auto=0

视频链接:

https://v.qq.com/x/page/b0674dcd3hn.html

相信看完视频的小伙伴已经了解了程序的实现过程,代码我已上传github了,需要的童鞋请自取,别忘了给我点个star哦。


github地址:

https://github.com/yangxuanxc/wechat_friends

如果大家觉得视频不清晰或者想保存视频,没问题,二胖已经把视频上传百度云了。

可以关注微信公众号【大数据前沿】

在消息窗口回复【微信好友】➡️即可获得相关视频

如果有朋友现在暂时不会使用github,没问题,二胖把代码也上传到百度云了,和获取视频的方式一样,公众号回复【微信好友】即可。

另外:如果你正在学编程,二胖推荐你看一下我另外一篇文章

这可能是我见过最好的编程指南

截至目前此文在知乎有近8k的赞同数,上万的收藏,在微信公众号有6000阅读量,我相信能对你有一点点帮助的。

如果你觉得本文对你有帮助,请直接赞赏支持,谢谢。

近期热文:

用python挖一挖知乎上宅男们最喜欢的1000个妹子
成都,我们还回得去么?


想学习制作动态二维码么?

关注大数据前沿

查看历史消息即可

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存