Python实现微信好友签名词云的构建(itchat、jieba、wordcloud)

本文介绍如何使用Python的itchat、jieba和wordcloud库来获取微信好友签名并生成词云图。通过itchat登录微信,提取好友签名,利用jieba进行分词和去除停用词后,最后使用wordcloud生成词云。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近Python操作微信的文章挺火的,结合前面介绍过的jiebawordcloud做一个简单的微信好友签名的词云。

操作微信的库有很多,现在比较流行的就是itchathttps://github.com/littlecodersh/ItChat

这个库对网页微信进行了封装,很多操作都非常简单。

代码如下,一些要点直接写在注释中
其中停用词表stopwords.txt需要自己构建,字体文件需要自己指定。

# coding: utf8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

'''用户登录部分:用户扫码登录,并自动保存一段时间登录状态,登录状态保存在同目录下的itchat.pkl文件中。
'''
import itchat
itchat.auto_login(hotReload=True)
itchat.dump_login_status()

'''获取签名部分:获取好友列表,好友列表类型为列表,列表中每一个元素(用户)都是一个字典,
字典中包含了用户的各种信息,Signature为签名。
get_friends得到的列表中第一个元素为用户自己,排除掉。'''
friends = itchat.get_friends(update=True)[:]
signature_list = [friend["Signature"] for friend in friends[1:]]

'''分词部分:导入结巴分词,首先将所有好友的签名拼接为一个字符串,
然后进行分词,再根据事先建立好的停用词表对分词结果进行过滤,
最终使用Counter形成分词结果的频率字典'''
import jieba
from collections import Counter
signature_text = "".join(signature_list)
signature_text = signature_text.replace("span","").replace("class",""
                 ).replace("emoji","")
stop_words = {}.fromkeys([ line.rstrip().decode('utf-8'
             ) for line in open('stopwords.txt') ])
signature_wordlist = [word for word in jieba.cut(signature_text, cut_all=True
                     ) if word not in stop_words] 
word_counter = Counter(signature_wordlist)

'''词云部分:将结巴分词生成的分词频率字典传递给wordcloud生成词云,字体可以自定义,
例子中设为同目录下的YaHei Consolas Hybrid.ttf字体'''
import matplotlib.pyplot as plt
import PIL.Image as Image
from wordcloud import WordCloud
my_wordcloud = WordCloud(background_color="white", font_path="YaHei Consolas Hybrid.ttf"
               ).generate_from_frequencies(word_counter)

plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()

结果如下
这里写图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值