在知乎上看到一篇关于如何使用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登录微信获取好友签名并生成词云的更多相关文章

  1. python 一键登录微信分析好友性别 地址 生成结果

    # -*- coding:utf- -*- """ author:Mr Yang data:// """ import itchat imp ...

  2. Python3 itchat微信获取好友、公众号、群聊的基础信息

    Python3 itchat微信获取好友.公众号.群聊的基础信息 一.简介 安装 itchat pip install itchat 使用个人微信的过程当中主要有三种账号需要获取,分别为: 好友 公众 ...

  3. Python 情人节超强技能 导出微信聊天记录生成词云

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Python实用宝典 PS:如有需要Python学习资料的小伙伴可 ...

  4. python 基于 wordcloud + jieba + matplotlib 生成词云

    词云 词云是啥?词云突出一个数据可视化,酷炫.以前以为很复杂,不想python已经有成熟的工具来做词云.而我们要做的就是准备关键词数据,挑一款字体,挑一张模板图片,非常非常无脑.准备好了吗,快跟我一起 ...

  5. python 爬取豆瓣电影短评并wordcloud生成词云图

    最近学到数据可视化到了词云图,正好学到爬虫,各种爬网站 [实验名称] 爬取豆瓣电影<千与千寻>的评论并生成词云 1. 利用爬虫获得电影评论的文本数据 2. 处理文本数据生成词云图 第一步, ...

  6. python 爬取豆瓣电影评论,并进行词云展示及出现的问题解决办法

    本文旨在提供爬取豆瓣电影<我不是药神>评论和词云展示的代码样例 1.分析URL 2.爬取前10页评论 3.进行词云展示 1.分析URL 我不是药神 短评 第一页url https://mo ...

  7. 从CentOS安装完成到生成词云python学习日记

    欢迎访问我的个人博客:原文链接 前言 人生苦短,我用python.学习python怎么能不搞一下词云呢是不是(ง •̀_•́)ง 于是便有了这篇边实践边记录的笔记. 环境:VMware 12pro + ...

  8. 用Python生成词云

    词云以词语为基本单元,根据词语在文本中出现的频率设计不同大小的形状以形成视觉上的不同效果,从而使读者只要“一瞥“即可领略文本的主旨.以下是一个词云的简单示例: import jieba from wo ...

  9. 10分钟教你用Python玩转微信之好友性别比例统计分析

    01 前言+效果展示 想必,微信对于大家来说,是再熟悉不过的了.那么,大家想不想探索一下微信上的各种奥秘呢?今天,我们一起来简单分析一下微信上的好友性别比例吧~废话不多说,开始干活. 结果如下: 02 ...

随机推荐

  1. github渗透测试工具库[转载]

    前言 今天看到一个博客里有这个置顶的工具清单,但是发现这些都是很早以前就有文章发出来的,我爬下来后一直放在txt里吃土.这里一起放出来. 漏洞练习平台 WebGoat漏洞练习平台:https://gi ...

  2. Mybatis-06-Lombok

    偷懒神器Lombok 1. 什么是Lombok? java library plugs build tools 2.使用步骤: 在IDEA中安装Lombok插件 在项目中导入lombok的jar包   ...

  3. IOS 单例崩溃分析 2014-12-10 15:46:36

    单例模式是常用的模式,但是在单例应用中偶或引发崩溃让人匪夷所思.其实真的是单例引起的吗?未必.但是现象都指向了是单例引起的.今天我亲身经历了看似崩溃在单例上的一个例子,但实则不是,今天做个记录用于今后 ...

  4. 《MySQL必知必会》过滤数据,数据过滤(where ,in ,null ,not)

    <MySQL必知必会>过滤数据,数据过滤 1.过滤数据 1.1 使用 where 子句 在SEL ECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤. WHERE子句在表名(FR ...

  5. Salesforce学习笔记之Actions and Recommendations(续)

    上次对这个Actions and Recommendations进行了初步研究,因为一些问题没有得到很好的解决,又花了很多时间,终于得到了一个比较好的解决方案.小结一下. 1. 生成Actions a ...

  6. 《Java从入门到失业》第一章:计算机基础知识(二):计算机组成及基本原理

    1.2计算机组成及基本原理 1.2.1硬件组成 这里说的计算机主要指微型计算机,俗称电脑.一般我们见到的有台式机.笔记本等,另外智能手机.平板也算.有了一台计算机,我们就能做很多事情了,比如我在写这篇 ...

  7. 使用IDEA新建基于SpringBoot的Web项目(超详细)

    目前java的开发很多Learner都慢慢的学习使用IDEA这款工具,个人觉得其实相比Eclipse来说差不多,个人习惯的问题,但是我还是推荐IDEA这款工具.虽然它目前是收费的,但相信网上的各种破解 ...

  8. JavaScript学习系列博客_26_JavaScript 数组的一些方法

    数组的一些方法 - push() - 用来向数组的末尾添加一个或多个元素,并返回数组新的长度 - 语法:数组.push(元素1,元素2,元素N) - pop() - 用来删除数组的最后一个元素,并返回 ...

  9. cni-ipam-etcd demo

    链接:https://github.com/jeremyxu2010/cni-ipam-etcd 测试demo: package main import ( "fmt" " ...

  10. cinder migrate基础内容-源码分析

    一.cinder-api服务入口 D:\code-program\cinder-codejuno\api\contrib\admin_actions.py from cinder import vol ...