用 Python 爬了爬自己的微信朋友(实例讲解)


Posted in Python onAugust 25, 2017

最近几天干啥都不来劲,昨晚偶然了解到 Python 里的 itchat 包,它已经完成了 wechat 的个人账号 API 接口,使爬取个人微信信息更加方便。鉴于自己很早之前就想知道诸如自己微信好友性别比例都来自哪个城市之类的问题,于是乎玩心一起,打算爬一下自己的微信。

用 Python 爬了爬自己的微信朋友(实例讲解)

作者:Alfred

首先,在终端安装一下 itchat 包。

用 Python 爬了爬自己的微信朋友(实例讲解)安装完成后导入包,再登陆自己的微信。过程中会生产一个登陆二维码,扫码之后即可登陆。登陆成功后,把自己好友的相关信息爬下来。

用 Python 爬了爬自己的微信朋友(实例讲解)

有了上面的 friends 数据,我们就可以来做分析啦。

自己微信好友的男女比例

仔细观察了一下返回的数据结构,发现”性别“是存放在一个字典里面的,key 是”Sex“,男性值为 1,女性为 2,其他是不明性别的(就是没有填的)。可以写个循环获取想要的性别数据,得到自己微信好友的性别比例。

用 Python 爬了爬自己的微信朋友(实例讲解)

打印的结果为:

男性好友:37.65%

女性好友:59.23%

不明性别好友:3.12%

啊,一不小心就暴露了自己女性朋友比较多的事实。然而为什么我现在还是一只汪?!好了,再把这个数据用R画成图看看(Python 作图真的是忍不了,代码就不放了):

用 Python 爬了爬自己的微信朋友(实例讲解)

自己微信好友的城市分布

再仔细观察 friends 列表,发现里面还包含了好友昵称、省份、城市、个人简介等等的数据,刚好可以用来分析好友城市分布,最好的方式是定义一个函数把数据都爬下来,存到数据框里,再进行分析。

用 Python 爬了爬自己的微信朋友(实例讲解)

以上便得到一个叫 data 的 csv 桌面文件, 用 R 打开并简单做一下数据预处理,得到如下(涉及隐私的已被预处理):

用 Python 爬了爬自己的微信朋友(实例讲解)

接着先根据省份、城市进行数据的分组和聚合,选择排名前二十的,利用 ggplot2 包画出如下的城市分布图(代码太长,不放了,就是这么任性,有需要参考的直接向我拿):

用 Python 爬了爬自己的微信朋友(实例讲解)

看来我大部分的朋友都是在广东的(不是废话吗),其中广东的朋友大部分集中在广、深、珠,第二名是在奥克兰, 接着是四川、澳门等。灰色的 NA 值是指没有设置自己所在地的朋友,一共有 70 多人。

另外,在国外的朋友由于微信的设置问题(很多是直接跳过省份,只有城市可以选择的),很多国外的城市被误当成了省份。

再来一张图看看自己微信朋友在广东的具体分布(取前八):

用 Python 爬了爬自己的微信朋友(实例讲解)

自己微信好友个性签名的自定义词云图

好玩的来了。之前已经爬下了每个好友的个性签名,刚好可以分析一下大伙儿个性签名时使用的高频词语是什么,顺便可以做个词云图。

先把原先爬下来的个性签名(Signature)打印出来,发现有很多本来是表情的,变成了 emoji、span、class 等等这些无关紧要的词,需要先替换掉,另外,还有类似<>/= 之类的符号,也需要写个简单的正则替换掉,再把所有拼起来,得到 text 字串。
用 Python 爬了爬自己的微信朋友(实例讲解)接着就可以把 JB,啊不,把结巴分词这个包搞进来分词。

用 Python 爬了爬自己的微信朋友(实例讲解)

终于可以进入画图阶段了。可以根据自己想要的图片、形状、颜色画出相似的图形(在这里,我使用的是我的头像,当然,为了颜色可以更加鲜艳使最后画出的词云图更加好看易辨,我先对自己的头像用 PS 做了一点小处理)。为此,我们需要把 matplotlib、wordcloud、numpy、PIL 等包搞进来。

用 Python 爬了爬自己的微信朋友(实例讲解)

运行上面的代码,得到下面的图:

用 Python 爬了爬自己的微信朋友(实例讲解)

看来,在我的微信好友的个人签名里,有人善于聆听,有人强调善良,有人重视灵魂,有人凝视人生。一直在等待,不放弃寻找。历尽曲折,不畏虚伪。真心如一,不能辜负。一步一生多努力,一起一切 one more dream(真编不下去了)。

最后

以上是不是很有趣呢?是不是又打开了一扇新世界的大门呢?

我微信好友也不是太多,如果微信好友有几千个,可以得到几千条数据,分析一下还是很有价值的。

当然,itchat 包还有很多其他的功能还有待发掘,包括自动回复微信信息、自动添加好友、管理微信群等,有时间再慢慢摸索吧。

这篇用 Python 爬了爬自己的微信朋友(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
基于ID3决策树算法的实现(Python版)
May 31 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
Feb 11 Python
python中计算一个列表中连续相同的元素个数方法
Jun 29 Python
在numpy矩阵中令小于0的元素改为0的实例
Jan 26 Python
Python应用领域和就业形势分析总结
May 14 Python
如何使用python把ppt转换成pdf
Jun 29 Python
python Pandas库基础分析之时间序列的处理详解
Jul 13 Python
react+django清除浏览器缓存的几种方法小结
Jul 17 Python
Django发送邮件和itsdangerous模块的配合使用解析
Aug 10 Python
Python单元测试与测试用例简析
Nov 09 Python
python 实现查询Neo4j多节点的多层关系
Dec 23 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
Jul 07 Python
详解python基础之while循环及if判断
Aug 24 #Python
用Python实现随机森林算法的示例
Aug 24 #Python
python利用urllib实现爬取京东网站商品图片的爬虫实例
Aug 24 #Python
python 接口_从协议到抽象基类详解
Aug 24 #Python
Python调用ctypes使用C函数printf的方法
Aug 23 #Python
使用Python实现博客上进行自动翻页
Aug 23 #Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
Aug 23 #Python
You might like
深入解析php之sphinx
2013/05/15 PHP
dedecms函数分享之获取某一栏目所有子栏目
2014/05/19 PHP
php实现的Curl封装类Curl.class.php用法实例分析
2015/09/25 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
jquery中通过过滤器获取表单元素的实现代码
2011/07/05 Javascript
jquery方法+js一般方法+js面向对象方法实现拖拽效果
2012/08/30 Javascript
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
浅析javascript中的事件代理
2015/11/06 Javascript
JavaScript表单焦点自动切换代码
2016/07/24 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
jQuery实现判断控件是否显示的方法
2017/01/11 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
Express + Node.js实现登录拦截器的实例代码
2017/07/01 Javascript
JavaScript编程设计模式之观察者模式(Observer Pattern)实例详解
2017/10/25 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
JS实现网页端猜数字小游戏
2020/03/06 Javascript
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
Python基础教程之利用期物处理并发
2018/03/29 Python
让代码变得更易维护的7个Python库
2018/10/09 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
python psutil监控进程实例
2019/12/17 Python
Python基础之列表常见操作经典实例详解
2020/02/26 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
2021/01/08 Python
DHC美国官网:日本通信销售第一的化妆品品牌
2017/11/12 全球购物
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
社团个人总结范文
2015/03/05 职场文书
自主招生推荐信格式模板
2015/03/24 职场文书
网站文案策划岗位职责
2015/04/14 职场文书
红与黑读书笔记
2015/06/29 职场文书
辞职离别感言
2015/08/04 职场文书
百年校庆宣传标语口号
2015/12/26 职场文书
golang fmt格式“占位符”的实例用法详解
2021/07/04 Golang
Java获取e.printStackTrace()打印的信息方式
2021/08/07 Java/Android