#功能:请输出微信好友的签名,格式(好友昵称,好友签名,情感极性)
#功能:还能实现词云分析,自定义画图
import itchat
import re
from snownlp import SnowNLP#自然语言处理
from wordcloud import WordCloud
from matplotlib import pyplot as plt
import jieba
import numpy as np
import PIL.Image as Image
#爬取自己好友相关信息,返回一个json文件
itchat.auto_login(hotReload=True)
friends=itchat.get_friends(update=True)[0:]
def getSignature(): #获取好友签名,并对其进行情感分析
with open("sign.txt",'w',encoding="utf-8") as file:
for f in friends:
nickname=f["NickName"]
rec1=re.compile("[^\u4e00-\u9fa5^]")
nickname=rec1.sub("",nickname)
signature=f["Signature"].strip().replace("emoji","").replace("span","").replace("class","")
rec=re.compile("[^\u4e00-\u9fa5^]")
signature=rec.sub("",signature)
#情感分析
if signature !="":
s=SnowNLP(signature)
if s.sentiments>=0.55:
file.write("积极地签名:")
file.write(nickname+"\n")
file.write(signature+"\n")
elif s.sentiments<0.45:
file.write("消极的签名:")
file.write(nickname+"\n")
file.write(signature+"\n")
else:
file.write("一般地签名:")
file.write(nickname+"\n")
file.write(signature+"\n")
def create_wordcloud(filename): #绘制词云
text=open(filename,encoding="utf-8").read()
wordlist=jieba.cut(text,cut_all=True)
wl=" ".join(wordlist)
coloring=np.array(Image.open("he1.png"))
wc=WordCloud(background_color='white',max_words=300,font_path="C:\\Windows\\Fonts\\simfang.ttf",
height=500,width=500,max_font_size=60,random_state=30,mask=coloring)
myword=wc.generate(wl)
plt.imshow(myword)
plt.axis("off")
plt.show()
wc.to_file("sign.png")
itchat.send_image("sign.png","filehelper")
getSignature()
create_wordcloud("sign.txt")