【上帝视角看微信】用 Python 爬取自己的微信朋友

微信作为一款拥有将近9亿用户的超级APP,已经成为很多人生活中不可或缺的一部分,聊天、分享动态、阅读资讯、购物支付……微信就像一张移动互联网的身份证,拥有它就能在移动互联的世界行止由心。本文作者利用 Python 爬取了自己微信好友的信息后,像打开了一扇新世界的大门。一起来围观他的爬取过程吧。

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

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

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

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

自己微信好友的男女比例

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

打印的结果为:

男性好友:37.65%

女性好友:59.23%

不明性别好友:3.12%

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

自己微信好友的城市分布

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

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

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

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

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

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

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

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

先把原先爬下来的个性签名(Signature)打印出来,发现有很多本来是表情的,变成了 emoji、span、class 等等这些无关紧要的词,需要先替换掉,另外,还有类似<>/= 之类的符号,也需要写个简单的正则替换掉,再把所有拼起来,得到 text 字串。

接着就可以把 JB,啊不,把结巴分词这个包搞进来分词。

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

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

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

最后

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

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

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

原文发布于微信公众号 - 钱塘大数据(qtbigdata)

原文发表时间:2017-07-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据

看看那些不在gnomAD数据库出现的常见人群变异位点是什么

前面我们说到了对3784343个的SNP位点来说,3353921个因为人群频率大于了0.05会被过滤掉,还剩下430304值得我好好研究一下。 那么,现在就开始...

18210
来自专栏机器人网

扫地机器人为自己“正名”:不仅能扫地,还可以遛娃

历经几次迭代之后,现在的扫地机器人已经基本能比较好地完成室内清洁工作,但依然有不少朋友在网上吐槽买了个“智障”扫地机器人,并引起了一大群人的共鸣。今天,扫地机器...

2585
来自专栏IT派

我们爬了上千个数据分析师信息, 你真的懂数据分析师嘛?

有人说,这个时代,只要站在了风口,猪都能飞起来,尤其互联网行业,千变万化,日异月殊,一不小心就错过了风口,如果没记错的话,前几年火的是App开发,后来是大数据,...

963
来自专栏程序员互动联盟

有多少大学还在用Turbo C做编译器

前几天在悟空问答上看到一个正在做计算机二级考试的题目,然后软件报出了一堆错误,很典型的软件bug。 也有人私下问的说想学C语言编程Turbo C该从哪里下载 ...

36012
来自专栏阮一峰的网络日志

学习C语言的教材

我的C语言是自学的,这些年看过不少教材。 下面,我对其中一些教材做个点评。 1. How to Think Like a Computer Scientist:...

2889
来自专栏Python专栏

贩卖VPN的程序员,后悔没去演戏了吧!

我的公众号叫「Python专栏」,我说了这是为了方便喜欢Python的人搜索的。但是这里不止有Python,我会输出一些个人感悟、对实事的理解和看法,纯粹的表述...

2632
来自专栏企鹅号快讯

30w代码量大学生总结编程学习心得就是一个字:练,尤其是C与C+

浏览自己的过去, 现在主要从编程开发的角度,总结自己的学习路线。由于课程的安排,大一上学期学习C语言,大一下学期学习数据结构与算法;大二上学期学习C++基础知识...

1918
来自专栏企鹅号快讯

用python爬取自己的朋友圈,得到的信息超过你的想象!

微信作为一款拥有将近9亿用户的超级APP,已经成为很多人生活中不可或缺的一部分,聊天、分享动态、阅读资讯、购物支付……微信就像一张移动互联网的身份证,拥有它就能...

41010
来自专栏日常学python

Python 面试宝典

步入 9 月,徐徐的秋风给酷热的天气带来丝丝凉意。同时,也吹来一股招聘高潮。俗话说“金九银十”,每年的 9、10 月都是招聘高潮。有些小伙伴会参加秋招,有些小伙...

1143
来自专栏镁客网

惠普推出背包式电脑,这种“无线”解决方案真的靠谱吗?

802

扫码关注云+社区