在知乎上看到一篇关于如何使用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. Java中访问控制修饰符的详解和示例——Java学习

    Java中的四个访问控制修饰符 简述 在Java中共有四个: public -- 对外部完全可见 protected -- 对本包和所有子类可见 默认(不需要修饰符)-- 对本包可见 private ...

  2. P6087 [JSOI2015]送礼物 01分数规划+单调队列+ST表

    P6087 [JSOI2015]送礼物 01分数规划+单调队列+ST表 题目背景 \(JYY\) 和 \(CX\) 的结婚纪念日即将到来,\(JYY\) 来到萌萌开的礼品店选购纪念礼物. 萌萌的礼品店 ...

  3. do...while循环语句(水仙花)

    #define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<stdlib.h&g ...

  4. add application window with unknown token XXX Unable to add window;is your activity is running?

    报错: Attempted to add application window with unknown token XXX Unable to add window——token android.o ...

  5. Mybatis 中判断参数长度

    <if test="params.length()!=2">

  6. Linux C++实现一服务器与多客户端之间的通信

    通过网络查找资料得到的都是一些零碎不成体系的知识点,无法融会贯通.而且需要筛选有用的信息,这需要花费大量的时间.所以把写代码过程中用到的相关知识的博客链接附在用到的位置,方便回顾. 1.程序流程 服务 ...

  7. SpringBoot项目 使用Jenkins进行自动化部署 gitlab打tag 生产测试环境使用 含配置中心

    脚本 node('master') { def mvnHome = tool 'maven11-free' def gitUrl = "http://gitlab.wdcloud.cc:10 ...

  8. 2020.5.21 第一篇 Scrum冲刺博客

    Team:银河超级无敌舰队 Project:招新通 项目冲刺集合贴:链接 目录 一.Alpha 阶段成员任务安排 二.明日任务安排 三.预期的任务量 四.敏捷开发前的感想 五.团队期望 一.Alpha ...

  9. neighbor和neigh_modify(转载)

    (转载:http://blog.sina.com.cn/s/blog_b48a7ac30102w4mg.html###) 以下取自:http://simulation.haotui.com/viewt ...

  10. Asp.net Core启动流程讲解(四)

    Asp.net Core内 DI(DependencyInjection)贯穿了项目的始终,要学习Asp.net Core就无法越过DI. 下面讲解一下DI在Asp.Net Core内的流程 asp. ...