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

 更新时间:2017年08月25日 09:07:18   作者:Alfred  
下面小编就为大家带来一篇用 Python 爬了爬自己的微信朋友(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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

数据爬取教程

作者:Alfred

首先,在终端安装一下 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 包还有很多其他的功能还有待发掘,包括自动回复微信信息、自动添加好友、管理微信群等,有时间再慢慢摸索吧。

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

相关文章

  • Python判断文件或文件夹是否存在的三种方法

    Python判断文件或文件夹是否存在的三种方法

    本文给大家介绍三种判断文件或文件夹是否存在的方法,分别使用os模块、Try语句、pathlib模块。感兴趣的朋友一起看看吧
    2017-07-07
  • Python入门教程5. 字典基本操作【定义、运算、常用函数】

    Python入门教程5. 字典基本操作【定义、运算、常用函数】

    这篇文章主要介绍了Python字典基本操作,包括字典的基本定义、运算与常用函数相关使用技巧,代码注释中备有详尽说明,便于理解,需要的朋友可以参考下
    2018-11-11
  • Django框架使用富文本编辑器Uedit的方法分析

    Django框架使用富文本编辑器Uedit的方法分析

    这篇文章主要介绍了Django框架使用富文本编辑器Uedit的方法,结合实例形式分析了Django框架中使用Uedit的安装、配置方法及Uedit相关插件制作方法,需要的朋友可以参考下
    2018-07-07
  • Python Asyncio中Coroutines,Tasks,Future可等待对象的关系及作用

    Python Asyncio中Coroutines,Tasks,Future可等待对象的关系及作用

    这篇文章主要介绍了Python Asyncio中Coroutines,Tasks,Future可等待对象的关系及作用,文章围绕主题展开详细的内容介绍,需要的小伙伴可以参考一下
    2022-06-06
  • python制作微博图片爬取工具

    python制作微博图片爬取工具

    这篇文章主要介绍了python如何制作微博图片爬取工具,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2021-01-01
  • 基于keras输出中间层结果的2种实现方式

    基于keras输出中间层结果的2种实现方式

    今天小编就为大家分享一篇基于keras输出中间层结果的2种实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • 使用Python进行数据清洗与存储的基本方法

    使用Python进行数据清洗与存储的基本方法

    在爬虫数据获取完成后,数据往往是“原始”的,不适合直接使用,清洗和存储是将爬取到的原始数据转化为有用信息的关键步骤,本文将系统地介绍 Python 中进行数据清洗与存储的基本方法,帮助新手理解如何处理爬虫数据,使其更加适合分析和使用,需要的朋友可以参考下
    2024-11-11
  • 在python中创建表格的两种方法实例

    在python中创建表格的两种方法实例

    Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言,下面这篇文章主要给大家介绍了关于如何在python中创建表格的两种方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • Pandas数据清洗与过滤空值技巧

    Pandas数据清洗与过滤空值技巧

    在数据分析过程中,使用pandas库进行数据清洗和过滤空值是基本而重要的步骤,首先,导入pandas库并加载数据,其次,利用isnull()或isna()方法检查数据中的空值,接着,可以使用dropna()方法过滤掉含有空值的行,或针对特定列过滤空值
    2024-09-09
  • pygame实现键盘和鼠标事件的处理

    pygame实现键盘和鼠标事件的处理

    这篇文章主要介绍了pygame实现键盘和鼠标事件的处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03

最新评论