1. 程式人生 > >Python實現微信好友簽名詞雲的構建(itchat、jieba、wordcloud)

Python實現微信好友簽名詞雲的構建(itchat、jieba、wordcloud)

最近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()

結果如下
這裡寫圖片描述