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

微信的秘密-python可视化微信好友信息相关推荐

  1. itchat 调用微信网页版 python 调用微信

    itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单. 使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人. 当然,该api的使用远不止一个机器人,更多的功能等 ...

  2. python 微信_wxpy: 用 Python 玩微信

    wxpy: 用 Python 玩微信¶ 微信机器人 / 可能是最优雅的微信个人号 API wxpy 在 itchat 的基础上,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展 注意 强烈建议 ...

  3. python接入微信_使用python接入微信聊天机器人

    本文实例为大家分享了python接入微信聊天机器人的具体代码,供大家参考,具体内容如下 1.安装库wxpy: pip install -U wxpy or pip install -U wxpy -i ...

  4. python爬虫qq好友信息,GitHub - equationl/QQzone_crawler: QQ 空间动态爬虫,利用cookie登录获取所有可访问好友空间的动态保存到本地...

    关于 Edit by equationl 优先在 码云 上更新 该项目修改自 xjr7670 的 QQzone_crawler 原作者说明: QQ空间动态爬虫 修改了什么? 爬取完整的评论列表 爬取点 ...

  5. python发送消息到微信_通过python登录微信发送消息

    通过扫描二维码登录后发送信息,主要应用到了wxpy库,具体的看代码 from threading import Timer from wxpy import * import requests # # ...

  6. 【微信】利用python实现微信好友防撤回、消息监控

    该项目来源于github,将其跑通: # -*- coding: utf-8 -*- """ Created on Fri Jun 21 12:09:43 2019@au ...

  7. python 操作微信_利用 Python 实现微信半自动化操作

    本文首发于公众号:小夭同学,同步更新个人博客:故事胶片,转载请署名. 注意:须有一个可以登录网页版的微信号 可以在 微信网页版 登录一下查看 1.需求场景 很多管理大量微信社群的小伙伴都有这样的场景, ...

  8. python使用微信设置-用Python玩微信跳一跳黑科技详细使用教程

    2017年的小尾巴上,微信推出了小游戏,其中跳一跳火遍大江南北,咱们可爱的程序猿哥哥直接用Python写了个自动跳一跳的程序,github地址:https://github.com/wangshub/ ...

  9. python控制微信小程序,python+appium微信小程序自动化实现

    一.安装Appium 二.Appium SDK配置 三.chromedriver驱动路径配置及appium启动 1.查看X5内核版本 微信小程序是基于goole的webview 做了封装了,叫x5内核 ...

最新文章

  1. Blender写实建筑场景制作学习教程 Exterior Visualization in Blender 2.9
  2. django celery
  3. 数据中心管理:从DCIM过渡到DMAAS
  4. php表单验证并使值变化,php – Zend_Form手动设置和验证字段值
  5. 微信ASP.NET高级平台接口
  6. 面向 Android 软件开发套件(SDK)的 x86 Android* 系统映像许可协议
  7. 为什么开发环境如此之乱
  8. DataSet用法操作xml
  9. Flash相关知识总结
  10. python中绝对值怎么表示_python如何使用绝对值
  11. python常用颜色表示_Python命令行的常用颜色,python,字体
  12. 电子计算机上面的mrc是什么意思,计算器上 M MRC GT CE MU 键分别是什么意思?
  13. 关闭cidaemon进程的方法
  14. cocos2d-x实现一个PopStar(消灭星星)游戏的逻辑分析及源码
  15. ubuntu背景色改为淡绿色
  16. PDF - 使用 Adobe Acrobat 压缩 PDF 大小
  17. 快速编写HTML代码常用的方法
  18. 支持右翼教科书的日本企业与个人全部名单
  19. 利用onekey软件制作win10.gho系统文件的小方法
  20. Chapter(MySQL)(基础知识)

热门文章

  1. 百度AI studio配置tensorflow环境
  2. vue antvG6 多功能tree图 树图树结构
  3. 第三阶段学习心得总结
  4. 电子商务网站互联网安全防御攻略
  5. Js操作DOM及获取浏览器高度以及宽度
  6. python画松树_Python中的Phyllotaxis模式| 算法植物学的一个单位
  7. 计算机毕设题目推荐 - 毕业设计项目
  8. 预备作业03——20162329张旭升
  9. 计算机输入汉字实际是,为何计算机能输入汉字
  10. 25:JMU-Python-分段函数2