【python】itchat登录微信获取好友签名并生成词云
在知乎上看到一篇关于如何使用itchat统计微信好友男女比例并使用plt生成柱状图以及获取微信好友签名并生成词云的文章https://zhuanlan.zhihu.com/p/36361397,感觉挺有意思,就照着学习了下,发现原文章中没有写明使用的库如何安装和使用到的资源没有说明,在这里详细的记录下。
本节用到的的库以及安装
itchat
微信相关操作,cmd中‘pip install itchat’
pillow(pil)
Image用到,cmd中‘pip install pillow’
re
正则表达式
wordcloud
词云,使用pip安装一直提示Built时候一直错误,所以在https://www.lfd.uci.edu/~gohlke/pythonlibs/中找到wordcloud对应版本,然后‘pip install wheel路径\*.whl’
jieba
分词库,可以对字符串中的词进行拆分,cmd中‘pip install jieba’
numpy
plt用到,cmd中‘pip install numpy’
引用库
#!/user/bin/python
##coding=utf-8
import itchat
from itchat.content import *
import numpy as np
from matplotlib import pyplot as plt
import re
from wordcloud import WordCloud
from wordcloud import ImageColorGenerator
import os
import io
import jieba
from PIL import Image
登录微信获取好友男女比例
itchat.login()
text=dict()
friends = itchat.get_friends(update=True)[0:]
male="male"
female="female"
other="other"
for i in friends[1:]:
sex = i['Sex']
if sex == 1:
text[male] = text.get(male, 0) + 1
elif sex == 2:
text[female] = text.get(female, 0) + 1
else:
text[other] = text.get(other, 0) + 1
total = len(friends[1:])
print(total)
print("男性好友: %.2f%%" %(float(text[male]) / total * 100)+"\n" +
"女性好友: %.2f%%" %(float(text[female]) / total * 100) + "\n" +
"不明性别好友: %.2f%%" %(float(text[other]) / total * 100))
使用PLT柱状图绘制男女比例
def draw(datas):
for key in datas.keys():
plt.bar(key,datas[key]) plt.legend()
plt.xlabel('sex')
plt.ylabel('rate')
plt.title("Gender of Alfred's friends")
plt.show()
爬取好友签名并保存到文件
def parse_signature():
itchat.login()
siglist = []
friends = itchat.get_friends(update=True)[1:]
for i in friends:
signature = i["Signature"].strip().replace("span","").replace("class","").replace("emoji","")
rep = re.compile("lf\d+\w|[<>/=]")
signature = rep.sub("",signature)
siglist.append(signature)
text = "".join(siglist)
with io.open('text.txt', 'a', encoding='utf-8') as f:
wordlist = jieba.cut(text, cut_all=True)
word_space_split = " ".join(wordlist)
f.write(word_space_split)
f.close()
解析文件并绘制词云
准备一张图片(8.jpg)放到当前目录下,字体资源准备好(DroidSansFallbackFull.ttf),可以使用everything搜索一下自己电脑中的字体资源拿过来一个用,放到当前目录下,如果没有会提示资源的问题。
def draw_signature():
text = open(u'text.txt', encoding='utf-8').read()
coloring = np.array(Image.open('8.jpg'))
my_wordcloud = WordCloud(background_color="white", max_words=2000,mask=coloring, max_font_size=300,random_state=42,scale=2,font_path="DroidSansFallbackFull.ttf").generate(text)
image_colors = ImageColorGenerator(coloring)
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()
小插曲:微信自动回复
@itchat.msg_register([PICTURE,TEXT])
def simple_reply(msg):
if msg['Type'] == TEXT:
ReplyContent = 'I received message: '+msg['Content']
if msg['Type'] == PICTURE:
ReplyContent = 'I received picture: '+msg['FileName']
itchat.send_msg('nice to meet you',msg['FromUserName']) itchat.auto_login()
itchat.run()
完
详情去https://zhuanlan.zhihu.com/p/36361397
参考
https://itchat.readthedocs.io/zh/latest/
https://zhuanlan.zhihu.com/p/36361397
【python】itchat登录微信获取好友签名并生成词云的更多相关文章
- python 一键登录微信分析好友性别 地址 生成结果
# -*- coding:utf- -*- """ author:Mr Yang data:// """ import itchat imp ...
- Python3 itchat微信获取好友、公众号、群聊的基础信息
Python3 itchat微信获取好友.公众号.群聊的基础信息 一.简介 安装 itchat pip install itchat 使用个人微信的过程当中主要有三种账号需要获取,分别为: 好友 公众 ...
- Python 情人节超强技能 导出微信聊天记录生成词云
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Python实用宝典 PS:如有需要Python学习资料的小伙伴可 ...
- python 基于 wordcloud + jieba + matplotlib 生成词云
词云 词云是啥?词云突出一个数据可视化,酷炫.以前以为很复杂,不想python已经有成熟的工具来做词云.而我们要做的就是准备关键词数据,挑一款字体,挑一张模板图片,非常非常无脑.准备好了吗,快跟我一起 ...
- python 爬取豆瓣电影短评并wordcloud生成词云图
最近学到数据可视化到了词云图,正好学到爬虫,各种爬网站 [实验名称] 爬取豆瓣电影<千与千寻>的评论并生成词云 1. 利用爬虫获得电影评论的文本数据 2. 处理文本数据生成词云图 第一步, ...
- python 爬取豆瓣电影评论,并进行词云展示及出现的问题解决办法
本文旨在提供爬取豆瓣电影<我不是药神>评论和词云展示的代码样例 1.分析URL 2.爬取前10页评论 3.进行词云展示 1.分析URL 我不是药神 短评 第一页url https://mo ...
- 从CentOS安装完成到生成词云python学习日记
欢迎访问我的个人博客:原文链接 前言 人生苦短,我用python.学习python怎么能不搞一下词云呢是不是(ง •̀_•́)ง 于是便有了这篇边实践边记录的笔记. 环境:VMware 12pro + ...
- 用Python生成词云
词云以词语为基本单元,根据词语在文本中出现的频率设计不同大小的形状以形成视觉上的不同效果,从而使读者只要“一瞥“即可领略文本的主旨.以下是一个词云的简单示例: import jieba from wo ...
- 10分钟教你用Python玩转微信之好友性别比例统计分析
01 前言+效果展示 想必,微信对于大家来说,是再熟悉不过的了.那么,大家想不想探索一下微信上的各种奥秘呢?今天,我们一起来简单分析一下微信上的好友性别比例吧~废话不多说,开始干活. 结果如下: 02 ...
随机推荐
- Vue 大量data及rules的data选项结构组织
如果Vue文件需要很多的data成员及表单验证,建议使用类似结构 export default{ data(){ const model = { username: 'suzhen', passwor ...
- SpringMVC大威天龙
一 SpringMVC简介 SpringMVC是Spring提供的一个强大而灵活的Web框架 借助于注解 SpringMVC提供了几乎是POJO的开发模式 使得控制器的开发和测试更加简单 二 Spri ...
- PYTHON替代MATLAB在线性代数学习中的应用(使用Python辅助MIT 18.06 Linear Algebra学习)
前言 MATLAB一向是理工科学生的必备神器,但随着中美贸易冲突的一再升级,禁售与禁用的阴云也持续笼罩在高等学院的头顶.也许我们都应当考虑更多的途径,来辅助我们的学习和研究工作. 虽然PYTHON和众 ...
- Nginx学习简记_part2
第4章:nginx配置实例 -反向代理 4.1 反向代理实例一 实现效果:使用 nginx 反向代理,访问 www.123.com 直接跳转到 127.0.0.1:8080 4.1.1 实验代码 1) ...
- Project ACRN documentation
Project ACRN documentation https://projectacrn.github.io/latest/index.html Virtio devices high-level ...
- 虚拟化技术之kvm镜像模板制作工具virt-sysprep
virt-sysprep这个工具来自libguest-tools这个工具包,它能够把kvm虚拟机对应的磁盘文件做成一个模板,后续我们启动虚拟机就可以基于这个镜像模板启动:什么是镜像模板呢?所谓模板就是 ...
- idea 推送jar包到maven私库
1.推送到本地仓库 idea直接install即可 2.推送到公司私库 2.1 使用配置公司仓库地址的setting文件 <?xml version="1.0" encodi ...
- jsoup中selector的用法及作用
1.jsoup——selector定义: selector选择器是用于对jsoup解析后document文档的数据筛选操作 2.jsoup——selector操作步骤: 1)先导jsoup架包 2)基 ...
- asyncio异步模块的21个协程编写实例
启动一个无返回值协程 通过async关键字定义一个协程 import sys import asyncio async def coroutine(): print('运行协程') if sys.ve ...
- Autoit 使用
一.Autoit 上传文件. 1.常用语法 - WinActivate("title") 聚焦到指定活动窗口 - ControlFocus ( "titl ...