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

发布时间 - 2026-01-11 02:57:19    点击率:

最近几天干啥都不来劲,昨晚偶然了解到 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 爬了爬自己的微信朋友(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# 爬微信朋友  # python3简单实现微信爬虫  # python爬虫_微信公众号推送信息爬取的实例  # python3之微信文章爬虫实例讲解  # Python 微信爬虫完整实例【单线程与多线程】  # python 爬取微信文章  # python爬取微信公众号文章  # python爬取微信公众号文章的方法  # Python爬取个人微信朋友信息操作示例  # python爬取指定微信公众号文章  # python使用webdriver爬取微信公众号  # Python爬虫实现“盗取”微信好友信息的方法分析  # 自己的  # 个性签名  # 的是  # 广东  # 爬下  # 画出  # 是在  # 给大家  # 不放  # 再把  # 就可以  # 来了  # 在这里  # 成了  # 好了  # 都不  # 太多  # 一只  # 最好的  # 他是 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  如何选择可靠的免备案建站服务器?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  高防服务器租用首荐平台,企业级优惠套餐快速部署  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  深圳网站制作培训,深圳哪些招聘网站比较好?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  如何在宝塔面板中创建新站点?  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  简单实现jsp分页  Swift中switch语句区间和元组模式匹配  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  Java解压缩zip - 解压缩多个文件或文件夹实例  网站制作免费,什么网站能看正片电影?  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  JavaScript如何实现倒计时_时间函数如何精确控制  北京的网站制作公司有哪些,哪个视频网站最好?  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  如何快速生成高效建站系统源代码?  微信推文制作网站有哪些,怎么做微信推文,急?  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  javascript中的try catch异常捕获机制用法分析  动图在线制作网站有哪些,滑动动图图集怎么做?  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  iOS发送验证码倒计时应用  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  如何生成腾讯云建站专用兑换码?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  利用JavaScript实现拖拽改变元素大小  Laravel如何使用Blade模板引擎?(完整语法和示例)  北京网站制作公司哪家好一点,北京租房网站有哪些?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  手机网站制作与建设方案,手机网站如何建设?  如何在Ubuntu系统下快速搭建WordPress个人网站?  javascript基本数据类型及类型检测常用方法小结  ,怎么在广州志愿者网站注册?  微信小程序 scroll-view组件实现列表页实例代码  javascript中闭包概念与用法深入理解  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  zabbix利用python脚本发送报警邮件的方法