Der Code wird hier platziert: wzyonggege/python-wechat-itchat
Die Wortwolke kann durch ein Minion-Bild ersetzt werden
--- - ------------------------------------------------- -------------------------------------------------
Kürzlich habe ich einige Möglichkeiten untersucht, WeChat zu spielen. Wir können uns mit der Webversion von WeChat anmelden, indem wir den QR-Code scannen, um Pakete zu erfassen und Informationen zu crawlen auch posten, um Informationen zu versenden.
Dann habe ich itchat entdeckt, ein Open-Source-Projekt Der Autor ist @LittleCoderEr hat die WeChat-Schnittstelle fertiggestellt, die uns die Erkundung von WeChat erheblich erleichtert itchat erreichen.
Installieren Sie die itchat-Bibliothek
pip install itchat
Lassen Sie uns zunächst einen einfachen Test durchführen, um sich bei WeChat anzumelden. Nach dem Scannen wird ein QR-Code generiert Code Nach Bestätigung der Anmeldung auf dem Mobiltelefon wird eine Nachricht an „filehelper“ gesendet. Dieser filehelper ist der Dateiübertragungsassistent auf WeChat.
import itchat# 登录itchat.login()# 发送消息itchat.send(u'你好', 'filehelper')
Zusätzlich zum Einloggen und Versenden von Nachrichten können wir auch so spielen, runtergehen~
Denken Sie, es ist natürlich sehr einfach, das Geschlechterverhältnis Ihrer Freunde in WeChat zu zählen. Holen Sie sich zunächst die Freundesliste und zählen Sie die Geschlechteranzahl in der Liste
import itchat# 先登录itchat.login()# 获取好友列表friends = itchat.get_friends(update=True)[0:]# 初始化计数器,有男有女,当然,有些人是不填的male = female = other = 0# 遍历这个列表,列表里第一位是自己,所以从"自己"之后开始计算# 1表示男性,2女性for i in friends[1:]:sex = i["Sex"]if sex == 1:male += 1elif sex == 2:female += 1else:other += 1# 总数算上,好计算比例啊~total = len(friends[1:])# 好了,打印结果print u"男性好友:%.2f%%" % (float(male) / total * 100)print u"女性好友:%.2f%%" % (float(female) / total * 100)print u"其他:%.2f%%" % (float(other) / total * 100)
Schauen Sie sich die Ergebnisse an:
(Okay, es hat die Wahrheit enthüllt, dass ich mehr männliche Freunde habe~~)
Es scheint nicht intuitiv zu sein Genug. Freunde, die interessiert sind, können eine visuelle Anzeige hinzufügen (ich werde ausführlich darüber sprechen, wenn ich die Gelegenheit dazu habe)
Installieren Sie es zuerst
pip install echarts-python
Das Anzeigeverhältnis verwendet im Allgemeinen das prozentuale Kreisdiagramm
# 使用echarts,加上这段from echarts import Echart, Legend, Piechart = Echart(u'%s的微信好友性别比例' % (friends[0]['NickName']), 'from WeChat')chart.use(Pie('WeChat', [{'value': male, 'name': u'男性 %.2f%%' % (float(male) / total * 100)}, {'value': female, 'name': u'女性 %.2f%%' % (float(female) / total * 100)}, {'value': other, 'name': u'其他 %.2f%%' % (float(other) / total * 100)}], radius=["50%", "70%"]))chart.use(Legend(["male", "female", "other"]))del chart.json["xAxis"]del chart.json["yAxis"]chart.plot()
Ding ding ding ~
Beim Abrufen der Freundesliste werden auch die JSON-Informationen zurückgegeben. Als ich die Informationen mit personalisierten Signaturen sah, wurde ich kreativ und schnappte mir die personalisierten Signaturen aller, schaute mir die hochfrequenten Wörter an und erstellte sie eine Wortwolke.
# coding:utf-8import itchat# 先登录itchat.login()# 获取好友列表friends = itchat.get_friends(update=True)[0:]for i in friends:# 获取个性签名signature = i["Signature"]print signature
Ergreifen Sie zuerst alle
Nach dem Drucken werden Sie feststellen, dass es viele Felder für Span, Klasse, Emoji, Emoji1f3c3 usw. gibt, da Emoticons verwendet werden In den personalisierten Signatursymbolen müssen diese Felder herausgefiltert werden. Schreiben Sie eine reguläre und Ersetzungsmethode zum Herausfiltern
for i in friends:# 获取个性签名signature = i["Signature"].strip().replace("span", "").replace("class", "").replace("emoji", "")# 正则匹配过滤掉emoji表情,例如emoji1f3c3等rep = re.compile("1f\d.+")signature = rep.sub("", signature)print signature
Als nächstes verwenden Sie jieba, um die Wörter zu segmentieren Erstellen Sie zunächst eine Wortwolke. Installieren Sie sie zuerst und führen Sie den Code
pip install jieba pip install wordcloud
aus
# coding:utf-8import itchatimport reitchat.login()friends = itchat.get_friends(update=True)[0:]tList = []for i in friends:signature = i["Signature"].replace(" ", "").replace("span", "").replace("class", "").replace("emoji", "")rep = re.compile("1f\d.+")signature = rep.sub("", signature)tList.append(signature)# 拼接字符串text = "".join(tList)# jieba分词import jiebawordlist_jieba = jieba.cut(text, cut_all=True)wl_space_split = " ".join(wordlist_jieba)# wordcloud词云import matplotlib.pyplot as pltfrom wordcloud import WordCloudimport PIL.Image as Image# 这里要选择字体存放路径,这里是Mac的,win的字体在windows/Fonts中my_wordcloud = WordCloud(background_color="white", max_words=2000, max_font_size=40, random_state=42, font_path='/Users/sebastian/Library/Fonts/Arial Unicode.ttf').generate(wl_space_split)plt.imshow(my_wordcloud)plt.axis("off")plt.show()
und den Code geändert
# wordcloud词云import matplotlib.pyplot as pltfrom wordcloud import WordCloud, ImageColorGeneratorimport osimport numpy as npimport PIL.Image as Imaged = os.path.dirname(__file__)alice_coloring = np.array(Image.open(os.path.join(d, "wechat.jpg")))my_wordcloud = WordCloud(background_color="white", max_words=2000, mask=alice_coloring, max_font_size=40, random_state=42, font_path='/Users/sebastian/Library/Fonts/Arial Unicode.ttf')\.generate(wl_space_split)image_colors = ImageColorGenerator(alice_coloring)plt.imshow(my_wordcloud.recolor(color_func=image_colors))plt.imshow(my_wordcloud)plt.axis("off")plt.show()# 保存图片 并发送到手机my_wordcloud.to_file(os.path.join(d, "wechat_cloud.png"))itchat.send_image("wechat_cloud.png", 'filehelper')
3. Automatische WeChat-Antwort
Dann implementieren wir eine automatische Antwort ähnlich der auf QQ. Das Prinzip besteht darin, die Nachricht nach Erhalt der Nachricht zurückzusenden Senden Sie gleichzeitig eine an den Dateiassistenten. Sie können die Nachrichten einheitlich im Dateiassistenten anzeigen.
Der Code ist sehr einfach, werfen wir einen Blick darauf
hält Sie nach dem Ausführen angemeldet, schaltet den automatischen Antwortmodus ein und zeigt ihn auf Ihrem Telefon an :
#coding=utf8import itchat# 自动回复# 封装好的装饰器,当接收到的消息是Text,即文字消息@itchat.msg_register('Text')def text_reply(msg):# 当消息不是由自己发出的时候if not msg['FromUserName'] == myUserName:# 发送一条提示给文件助手itchat.send_msg(u"[%s]收到好友@%s 的信息:%s\n" %(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(msg['CreateTime'])), msg['User']['NickName'], msg['Text']), 'filehelper')# 回复给好友return u'[自动回复]您好,我现在有事不在,一会再和您联系。\n已经收到您的的信息:%s\n' % (msg['Text'])if __name__ == '__main__':itchat.auto_login()# 获取自己的UserNamemyUserName = itchat.get_friends(update=True)[0]["UserName"]itchat.run()
Das obige ist der detaillierte Inhalt vonSo spielen Sie mit WeChat mit Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!