微信的秘密-python可视化微信好友信息

记得2016年第一次开通微信的时候,我以及周围的大多数人还是重度的QQ用户,当时只是跟风开通了一下,也没觉得会改变什么。没想到才两年过去,我已经忘记了QQ的存在,每天起来第一件事就是查看微信,睡觉前也必然要看一下朋友圈有什么好玩有意义的事情,不得不说腾讯的产品策略绝对是一流的。那么我们能用python对微信做些什么呢?
还好微信官方有一个比较冷门的python库-itchat,这是微信提供的一个借口,我们可以借由它来实现对微信信息的提取,本文要做的是提取微信好友信息并对个性签名进行可视化处理。
首先安装我们所需要的库:

pip install itchat
pip install matplotlib.pyplot    #用于生成2D图
pip install jieba  #用于中文分词
pip install wordcloud   #用于词云生成

第一步:提取好友信息:
调用itchat,通过扫码登陆网页微信获取返回的好友信息,代码如下:

def get_data():itchat.auto_login()   #调用登陆模块friends=itchat.get_friends(update=True)  #获取好友信息return friends

运行程序扫描生成的二维码登陆微信姐可以看到所有的好友信息,涉及隐私,这里就不放图了。
第二步:通过对返回的信息分析发现,每一行为一个好友的完整信息,用‘,’隔开顺序依次为:昵称,备注名,性别(1为男,2为女,0为不确定(什么鬼阿),省份,城市,个性签名,星标,特殊好友权限),这里定义一个函数将获取的数据存储到列表中,代码如下:

def prase_data(data):friends=[]for item in data[1:]:friend={'NickName':item['NickName'],                           #昵称'RemarkName':item['RemarkName'],                   #备注名'Sex':item['Sex'],#性别'Province':item['Province'],#省份'City':item['City'],#城市'Signature':item['Signature'].replace('\n',' ').replace(' ',' '),	#处理换行问题'StarFriend':item['StarFriend'],#星标朋友'ContactFlag':item['ContactFlag']	#好友权限}friends.append(friend)return friends

第三步:再定义一个函数将获取的列表保存为.txt文件,代码如下:

def save_to_txt():friends=prase_data(get_data())for item in friends:with open ('jjdfriend.txt','a',encoding='utf-')as f:f.write('%s,%s,%d,%s,%s,%s,%d,%d\n'%(item['NickName'],item['RemarkName'],item['Sex'],item['Province'],item['City'],item['Signature'],item['StarFriend'],item['ContactFlag']))

第四步:接下来是最重要的部分,获取个性签名并生成词云,安装好所需要的库文件之后,代码如下:

from wordcloud import WordCloud,STOPWORDS
import matplotlib.pyplot as plt
import jiebasigns=[]
with open ('fkdfriend.txt','r',encoding='utf-8')as f:rows=f.readlines()for row in rows:sign=row.split(',')[5]if sign!="":signs.append(sign)split=jieba.cut(str(signs))#分词
words=' '.join(split)#以空格连接
stopwords=STOPWORDS.copy()#设置屏蔽词
stopwords.add('span')
stopwords.add('class')
stopwords.add('emoji1f334')
stopwords.add('emoji1f388')
stopwords.add('emoji1f33a')
stopwords.add('emoji1f33c')
stopwords.add('emoji1f3633')bg_image=plt.imread('ground.jpg')
wordcloud = WordCloud(mask=bg_image,background_color='white',scale=1.5,stopwords=stopwords).generate(words)
#image_colors=ImageColorGenerator(bg_image)
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
wordcloud.to_file('word.jpg')

生成的图片如下:在这里插入图片描述
问题来了,为什么生成的是乱码,查询资料后发现wordcloud是默认不支持中文的,所以我们需要进行一些操作,首先找到系统中的字体文件夹:位置为:C:\Windows\Font,打开后里有这些字体:
在这里插入图片描述
这里我选择了微软雅黑字体,接下来需要将字体文件复制到系统安装wordcloud位置,路径如下:C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Lib\site-packages\wordcloud,将选择字体粘贴到文件夹内,如下图:
在这里插入图片描述
并且修改上面一句代码为:

wordcloud = WordCloud(mask=bg_image,background_color='white',font_path='msyhbd.ttc',scale=1.5,stopwords=stopwords).generate(words)#增加中文字体

运行成功,效果如下:

在这里插入图片描述
通过词云,你或许会恍然大悟,原来你们这样的人啊。是啊,在现在这个社会,我们似乎更像是一个行走的数据包,而且几乎每时每刻都在产生新数据,有很多人对大数据时代感到恐惧,认为隐私会被滥用之类。但事实上,每一次新技术的出现伊始都会有这样的声音,但我相信技术是无罪的,有问题的只是一部分人而已,并且这样的人无论什么时代都会存在,所以让我们敞开胸怀,拥抱这个美好的大数据时代。
当然,微信好友中能处理的信息还有很多,比如性别分布,地理位置都很有分析价值,有兴趣的可以尝试,这里推荐一个百度开源的python可视化库-pyecharts,这个库可以很大程度上替代matplotlib,pygal以及Geo。好了,就啰嗦这么多。

备注:本文中涉及的jieba库所用到的分词技术看起来好像是一个很神奇的东西,原来我也这么认为,但直到看来吴军先生的《数学之美》一书,发现它的解决依旧是使用了很常见的数学模型-马尔科夫链,感兴趣的可以阅读这一部分内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/253968.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

微信号的秘密...

“听说,微信可以改微信号了!” 不知道谁扯了一嗓子,让办公室变成了欢乐的海洋 张姐流下了激动的泪水:“太好了!姐的年龄终于不用暴露在微信号了!” “一朝自黑,朝朝自黑” 的王总变得更加权威 .…

好友国自然基金获批!畅饮之余透露给我这个秘密

之前自己也是羡慕科研新星冉冉升起, 后来沉下心来学习其发展之路。 只有找到自己的创新点, 持续在该领域发SCI论文, 才能把工作基础转化为基金资助。 其关键, 是高效利用优质资源, 途径就是靠谱的优质公众号。 下面是好…

用 python 分析了微信上所有的微信好友,发现了一个秘密...

最近研究了一下itchat和matplotlib,目前实现了对微信好友头像、性别、区域、个性签名的采集及展示。 本文就来详细介绍一下这个库的用法和一些核心逻辑实现。 1.微信登录 三行代码实现登录,为了避免我们频繁扫描二维码登录,这里我们加入ho…

超简单的方法找出QQ共同好友

先说两句废话,今天和小伙伴在看空间的小秘密,惊讶的发现有个共同的小秘密,就想把他找出来hhh,然后就有了这一步 1. 获取数据 先打开网页版的QQ邮箱,并且进入写信界面,然后!!&#…

我用 Python 爬取微信好友,最后发现一个大秘密

前言 你身处的环境是什么样,你就会成为什么样的人。现在人们日常生活基本上离不开微信,但微信不单单是一个即时通讯软件,微信更像是虚拟的现实世界。你所处的朋友圈是怎么样,慢慢你的思想也会变的怎么样。最近在学习 itchat&#…

用 Python 分析了所有微信好友,发现了一个秘密...

点击上方“何俊林”,马上关注,每天早上8:50准时推送 真爱,请置顶或星标 Illustrations by Evgenij Kungur 文/ Python攻城狮 最近研究了一下itchat和matplotlib,目前实现了对微信好友头像、性别、区域、个性签名的采集及展示。 本…

chatgpt赋能python:Python中画笔放下:掌握Python图形编程

Python 中画笔放下:掌握 Python 图形编程 Python 是一种高级编程语言,广泛应用于数据处理、人工智能、Web 应用程序等领域。除了这些应用外,Python 还可以用于图形编程,包括绘制 2D 和 3D 图形、创建游戏和交互式应用程序等。在 …

使用Python处理PDF文件的简介与实践

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

影驰 H610M 光影 评测

影驰 H610M 光影 针对英特尔 12 代酷睿处理器设计,采用了 H610 芯片组,造型简洁,面向入门级用户推出。影驰 H610M 光影组装电脑怎么搭配更合适这些点很重要http://www.adiannao.cn/du 主板采用 M-ATX 版型,供电部分没有覆盖散热片…

影驰 H610M 光影主板 评测

影驰宣布 H610M 光影主板首发价格为 599 元。这款主板针对英特尔 12 代酷睿处理器设计,采用了 H610 芯片组,造型简洁,面向入门级用户推出。 主板采用 M-ATX 版型,供电部分没有覆盖散热片。产品提供两个内存插槽,支持 D…

影驰gtx960显卡怎么样_影驰gtx960 2g_影驰gtx960 2g跑分

刚到手的二手GTX960影驰虎将跑分 割版的GTX960 2G显卡,游戏性能只是和GTX960/1050相当。如果你只是用来玩网游戏和一般的单机游戏的话,倒是够用, 否则的话,建议购买二手的4G版的GTX960显卡,这样就可以在1080P下玩大多…

starram内存条怎么样_starram内存牌子_星存内存条

我的电脑是星存(StarRam)内存条,512 DDR400 可看网上说有散热片的是假的? 请问是这样的吗? 假的和真的性能差别大不大??前天加了条内存,是黑金刚521 DDR400的, 可是安电脑里就不对了,倒是比以前快了,可是IE总出错,下载东西用迅雷一直自动关闭,重装系统干脆连硬盘都找不到了…

Sequelize:Node.js 中的强大 ORM 框架

❤️砥砺前行,不负余光,永远在路上❤️ 目录 前言优势:提高效率,不用SQL即可完成数据库操作。 那什么是 Sequelize?主要特性:1、模型定义和映射:2、关联和联接:3、事务管理&#xff…

chatgpt赋能python:Python中提取指定元素——一个简单而精细的方法

Python中提取指定元素——一个简单而精细的方法 在网页抓取中,经常需要提取特定元素,例如标题、段落、图片等,以便于后续的数据处理与分析。而Python则是许多工程师在此领域中的首选语言,其灵活的语法和强大的第三方库给爬虫和数…

chatgpt赋能python:Python中用什么表示空格

Python中用什么表示空格 空格在编程中是一个非常重要的概念,特别是在Python中。Python是一门非常灵活的语言,空格是它语法的一个关键组成部分。今天我们将探讨的是Python中用什么表示空格。 空格是Python中的一个重要概念,它被用来表示代码…

制作嵌入式busybox rootfs系统

1、busybox下载 BusyBox 此篇使用版本BusyBox 1.31.1 (stable) 2、设置交叉编译环境变量 source environment-setup-aarch64-poky-linux或者其他架构的编译链工具 3、busybox编译设置 cd busybox-1.31.1 修改根目录Makefile中的CROSS_COMPILE和ARCH参数 比如ARCH ? ar…

玻璃制品行业丨外贸业务管理难点及解决方案

玻璃作为一种重要的建筑材料,在国际贸易中一直占有一定的份额。随着国外市场需求量的不断增加,对玻璃制品的技术含量要求越来越高,需要在研发方面的投入也逐步加大。由于国际市场竞争激烈,想要做玻璃制品行业的外贸公司&#xff0…

如何使用Python自动化测试工具Selenium进行网页自动化?

引言 Selenium是一个流行的Web自动化测试框架,它支持多种编程语言和浏览器,并提供了丰富的API和工具来模拟用户在浏览器中的行为。Selenium可以通过代码驱动浏览器自动化测试流程,包括页面导航、元素查找、数据填充、点击操作等。 与PyAuto…

华为网络设备查询系统时间及修改系统时间命令

查看当前系统时间 dis time all 手动修改系统时间clock datetime 14:25:00 2020-6-19

华为计算产品备件查询助手

华为计算产品备件查询助手 https://support-it.huawei.com/server-spareparts/#/spareparts