用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(真编不下去了)。

最后

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

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

本文来自企鹅号 - 萌萌的程序员媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

推荐几个不错的Python资源

周末翻了下书,突然想起一个问题,23个设计模式在Python中是如何体现的,虽然Python里面没有接口,但是设计模式不是重依赖于具体的语言。所以心血来潮,就速...

4317
来自专栏IT技术精选文摘

Netflix最新视频优化实践:用更少的带宽打造完美画质

马赛克、模糊、扭曲的面孔和物体……糟糕的图像质量会大幅降低观众通过Netflix观赏喜爱的剧集或电影时的观赏体验。很多情况下,网络带宽不足或数据限流会导致我们无...

3104
来自专栏ThoughtWorks

如何快速读Paper

自从上次介绍了去哪里找paper之后,大家问我的问题就常常变成了:如何快速阅读一篇paper并准确的提取其中有用的信息。在本文中,我将试图为大家简要解答这个问题...

2502
来自专栏牛客网

春招实习面经分享(已拿到腾讯春招Offer)

十分幸运地收到了腾讯的Offer。。回来报答一下各位牛客网的战友们,说起来也是有点运气成分,最后通过腾讯的内推收到了offer!之前也屡遭重创,阿里的内推一面挂...

3426
来自专栏大数据文摘

Science最新研究:AI通过追踪光标移动,线上勘破骗局

1608
来自专栏灯塔大数据

探秘 | 一件有趣的事:我用 Python 爬了爬自己的微信朋友

最近几天干啥都不来劲,昨晚偶然了解到 Python 里的 itchat 包,它已经完成了 wechat 的个人账号 API 接口,使爬取个人微信信息更加方便。...

4165
来自专栏极客猴

618 购物节买什么?当然是书

时光荏苒,2018年已经过半。又到一年一度的”618”购物节,是时候来一波”买买买”。如果你目前想改变下自己,为自己的未来奋斗。可以少买一两件衣服,少买一两箱零...

982
来自专栏钱塘大数据

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

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

33110
来自专栏Data Analysis & Viz

爬取老树画画全部微博数据:三千诗与画

本次用fiddler抓包移动端(ipad)微博,再用python爬虫获取老树画画微博几乎全部内容。因为老树画画发布的微博结构较为简单,几乎都是:一幅画,配上一段...

1044
来自专栏wataloo的试验田

MOBA英雄AI设计分享

英雄AI的设计原则是:优秀的AI并不要求是尽量的和人表现一致,也不是多么的精准和无懈可击,而是能够和玩家进行很好的交互,提升游戏体验。

1.1K21

扫码关注云+社区