用 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 相关文章推荐
Python通过递归遍历出集合中所有元素的方法
Feb 25 Python
在Python中使用cookielib和urllib2配合PyQuery抓取网页信息
Apr 25 Python
python同时给两个收件人发送邮件的方法
Apr 30 Python
使用django-crontab实现定时任务的示例
Feb 26 Python
python 多维切片之冒号和三个点的用法介绍
Apr 19 Python
对pandas通过索引提取dataframe的行方法详解
Feb 01 Python
python使用pandas处理大数据节省内存技巧(推荐)
May 05 Python
selenium+PhantomJS爬取豆瓣读书
Aug 26 Python
Python根据服务获取端口号的方法
Sep 25 Python
Python实现元素等待代码实例
Nov 11 Python
python使用itchat模块给心爱的人每天发天气预报
Nov 25 Python
Python sys模块常用方法解析
Feb 20 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
自定义session存储机制避免会话保持问题
2014/10/08 PHP
php session的应用详细介绍
2017/03/22 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
PHP中Static(静态)关键字功能与用法实例分析
2019/04/05 PHP
JQuery优缺点分析说明
2011/04/10 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
深入理解JavaScript系列(41):设计模式之模板方法详解
2015/03/04 Javascript
js原生跨域_用script标签的简单实现
2016/09/24 Javascript
JS触摸事件、手势事件详解
2017/05/04 Javascript
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
2017/11/30 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
2018/05/02 Javascript
基于webpack4搭建的react项目框架的方法
2018/06/30 Javascript
在AngularJs中设置请求头信息(headers)的方法及不同方法的比较
2018/09/04 Javascript
解决echarts的多个折现数据出现坐标和值对不上的问题
2018/12/28 Javascript
详解vue2.6插槽更新v-slot用法总结
2019/03/09 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
javascript实现鼠标点击生成文字特效
2019/12/24 Javascript
原生JS利用transform实现banner的无限滚动示例代码
2020/06/15 Javascript
JavaScript 判断数据类型的4种方法
2020/09/11 Javascript
python实现基本进制转换的方法
2015/07/11 Python
Python处理XML格式数据的方法详解
2017/03/21 Python
python读写json文件的简单实现
2017/04/11 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
pygame实现俄罗斯方块游戏(基础篇2)
2019/10/29 Python
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
美国女孩洋娃娃店:American Girl
2017/10/24 全球购物
职业生涯规划书基本格式
2014/01/06 职场文书
八年级生物教学反思
2014/01/22 职场文书
区三好学生主要事迹
2014/01/30 职场文书
总经理助理工作职责
2014/02/06 职场文书
金融管理专业毕业生求职信
2014/03/12 职场文书
“四风”问题自我剖析材料思想汇报
2014/09/23 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
销售经理工作检讨书
2015/02/19 职场文书
Win11怎么把合并的任务栏分开 Win11任务栏合并分开教程
2022/04/06 数码科技