코드는 여기에 있습니다: wzyonggege/python-wechat-itchat
워드 클라우드는 미니언 그림으로 대체 가능
------ ---------- -------------- ---------- -------------------
최근 WeChat을 플레이하는 몇 가지 방법을 연구했습니다. WeChat 웹 버전을 사용할 수 있고, QR 코드를 스캔하여 로그인하여 패킷을 캡처하고 정보를 크롤링할 수 있으며, 게시하여 정보를 보낼 수도 있습니다.
그런 다음 오픈 소스 프로젝트인 itchat을 발견했습니다. 저자는 @LittleCoder입니다. WeChat 인터페이스가 완성되어 WeChat 탐색이 크게 쉬워졌습니다.
itchat 라이브러리 설치
pip install itchat
먼저 WeChat에 로그인하는 간단한 시험을 해보겠습니다. 다음 코드를 실행하면 휴대폰에서 로그인을 확인하기 위해 코드를 스캔한 후 메시지가 나타납니다. 'filehelper'로 전송되었습니다. 이 filehelper는 WeChat의 파일 전송 도우미입니다.
import itchat# 登录itchat.login()# 发送消息itchat.send(u'你好', 'filehelper')
로그인하고 메시지 보내는 것 외에도 이런 플레이도 가능해요~
위챗에서 친구의 성별 비율을 계산하고 싶다면 , 물론 매우 간단합니다. 먼저 친구 목록을 가져오고, 통계 목록의 성별 수를 확인하세요.
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)
결과를 보니 반갑습니다:
(알겠습니다. 남자 친구가 더 많다는 사실이 드러났습니다. ~~)
직관적이지 않은 것 같으니 관심 있는 친구는 추가해도 됩니다. 시각적인 표시로는 Python 기반의 Echarts를 사용합니다. (기회가 되면 자세히 설명하겠습니다.)
먼저 설치했습니다
pip install echarts-python
일반적으로 백분율 원형 차트를 사용하여 비율을 표시합니다
# 使用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()
Dendendenden~
친구 목록을 얻을 때 개인 서명이 있는 정보도 보았습니다. json 정보를 반환하고 창의력을 발휘하여 모든 사람의 개인화된 서명을 수집하고 빈도가 높은 단어도 살펴보았습니다.
# coding:utf-8import itchat# 先登录itchat.login()# 获取好友列表friends = itchat.get_friends(update=True)[0:]for i in friends:# 获取个性签名signature = i["Signature"]print signature
먼저 모두 가져오세요.
인쇄하고 나면 스팬, 클래스, emoji, emoji1f3c3 등의 필드가 많이 있음을 알 수 있습니다. 개인 서명에는 이모티콘이 사용되므로 이러한 필드를 필터링해야 합니다. out.Write 걸러내기 위한 일반 및 교체 방법
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
다음으로 jieba를 사용하여 단어를 분할한 다음 단어 클라우드를 만듭니다. 먼저 jieba 및 wordcloud 라이브러리를 설치합니다.
pip install jieba pip install wordcloud
code
# 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()
실행합니다. 코드는
이것입니다. . 워드클라우드 사용법에 따르면 색 구성표를 생성하는 그림을 찾을 수 있습니다. 여기
에서 코드를 수정했습니다
# 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')
흠~ 그렇군요. 작동하는 것 같습니다. 첨부된 내용은 win10에서 생성된 것입니다.
그런 다음 QQ와 유사한 자동 회신을 구현하겠습니다. 메시지를 받은 후 동시에 파일 도우미에 메시지를 보내면 파일 도우미에서 메시지를 볼 수 있습니다.
코드는 매우 간단합니다. 살펴보겠습니다
#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()
실행 후 로그인 상태를 유지하고 자동 응답 모드를 켜고 휴대폰에서 볼 수 있습니다.
물론 추가로 문자 메시지에는 사진(이모티콘은 사진으로 간주됨), 음성, 명함, 지리적 위치, 공유 및 참고 유형의 정보(즉, 메시지 철회와 같은 프롬프트가 포함된 메시지)도 받을 수 있습니다. 다음 양식을 사용하여 수락하시면 시도해 볼 수 있습니다
<code class="language-text">@itchat.msg_register(['Map', 'Card', 'Note', 'Sharing', 'Picture'])</code><br><br><br>
위 내용은 Python을 사용하여 WeChat을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!