Python使用微信itchat接口实现查看自己微信的信息功能详解
作者:thormas1996 发布时间:2021-07-29 16:07:20
标签:Python,微信,itchat
本文实例讲述了Python使用微信itchat接口实现查看自己微信的信息功能。分享给大家供大家参考,具体如下:
itchat是python的一个api,可以访问自己的微信信息,功能还蛮好玩的,可以扒取朋友信息,自动回复短信等等。
package:
itchat1.3.10 + python3.5 + wordcloud1.4.1
登录登出:
itchat.login()
#hotReload设置为True,可以保持一段时间登录
itchat.autologin(hotReload=True)
itchat.logout()
获取朋友数据:
friends = itchat.get_friends(update=True)[0:]
搜索某个朋友:
itchat.search_friends(name='name')
itchat.search_friends(wechatAccount='wechatid')
公众号和群聊的获取方式也是类似的:
itchat.get_mps(update=True)[0:]
itchat.search_mps()
itchat.get_chatrooms(update=True)[0:]
itchat.search_chatroom()
发信息:
itchat.send(msg='Received Your Message',toUserName=userName])
#username其实是一个id,nickname是微信名字,remarkname是备注名
自动回复信息:
@itchat.msg_register(itchat.content.TEXT)
def simple_reply(recv_msg):
msg = recv_msg['Text']
if msg == 'name':
itchat.send(msg=u'Received name from',toUserName=recv_msg['FromUserName'])
elif msg == 'age':
itchat.send(msg=u'Received age from',toUserName=recv_msg['FromUserName'])
itchat.run()
#register也接受其他参数,比如说isGroupChat=True用来只自动回复群聊信息
register还可以注册其他参数:
MAP | 地理位置的分享 |
CARD | 名片信息 |
SHARING | 链接分享 |
PICTURE | 表情或照片 |
RECORDING | 语音 |
ATTACHMENT | 附件 |
VIDEO | 视频 |
FRIENDS | 加好友申请,也就是说发起的一个好友申请其实是一条特殊的信息 |
SYSTEM | 系统消息,比如系统推送消息或者是某个群成员发生变动等等 |
NOTE | 通知文本,比如撤回了消息等等 |
例子:拉取朋友数据,用wordcloud可视化朋友signature
先读取数据
import itchat
itchat.login()
friends = itchat.get_friends(update=True)[0:]
简单分析下性别比例
male = female = other = 0
#friends[0] is personal information, friends start from 1
for i in friends[1:]:
sex = i["Sex"]
if sex == 1:
male += 1
elif sex == 2:
female += 1
else:
other +=1
total = len(friends[1:])
print("male: %.2f%%" % (float(male)/total*100) + "\n" +
"female: %.2f%%" % (float(female) / total * 100) + "\n" +
"unknown: %.2f%%" % (float(other) / total * 100))
获得各个参数,存入本地
filename = '' #需要修改这里
#爬取各个变量
def get_var(var):
variable = []
for i in friends:
value = i[var]
variable.append(value)
return variable
#把数据存到csv文件中,保存到桌面
NickName = get_var("NickName")
Sex = get_var('Sex')
Province = get_var('Province')
City = get_var('City')
Signature = get_var('Signature')
from pandas import DataFrame
data = {'NickName': NickName, 'Sex': Sex, 'Province': Province,
'City': City, 'Signature': Signature}
frame = DataFrame(data)
frame.to_csv(filename, index=True)
去除特殊字符和转义字符等
import re
siglist = []
for i in friends:
signature = i["Signature"].strip().replace("span","").replace("class","").replace("emoji","")
rep = re.compile("1f\d+\w*|[<>/=]")
signature = rep.sub("", signature)
siglist.append(signature)
查看signature列表
#去掉末尾的空格以及空的签名
while '' in siglist:
siglist.remove('')
for i in range(len(siglist)):
siglist[i].strip()
print(i,siglist[i])
#wordcloud读取数据要求为string,以空格隔开
text = "".join(siglist)
可视化签名
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
import numpy as np
import PIL.Image as Image
picture_path = '' #这里需要修改
coloring = np.array(Image.open(picture_path))
my_wordcloud = WordCloud(background_color="white", max_words=2000, font_path="2.ttf",
mask = coloring, max_font_size=60, random_state=42, scale=2).generate(text)
image_colors = ImageColorGenerator(coloring)
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()
保存:
save_path = '' #这里需要修改
my_wordcloud.to_file(save_path)
这里是以自己选的picture为形状,生成词云,以下是我的生成结果:
希望本文所述对大家Python程序设计有所帮助。
来源:https://blog.csdn.net/thormas1996/article/details/80966456


猜你喜欢
- 有时候为了自动化测试网页,我们往往希望能够使用一些脚本语言控制浏览器. 通过脚本模拟一些浏览器动作,然后测试得到的结果.这里, 我们讲解一下
- 使用SQLSERVER的应该经常遇到“Unable to read local eventlog (reason:事件日志文件已在读取时间更
- 本文实例讲述了Python实现的银行系统模拟程序。分享给大家供大家参考,具体如下:银行系统模拟程序1、概述使用面向对象思想模拟一个简单的银行
- 有时在项目中会遇到通过在页面中采用iframe的方式include其它页面,这时就会考虑不要因出现滚动条而影响页面效果,但include页面
- pycharm出现no module named xlwt问题首先声明,我是初学者,今天按照书上步骤,创建Excel文件,当我的xlwt安装
- 看下面的例子就明白了class Test(object): def __init__(self, value='hell
- 使用el-upload 上传视频总是报404错误,具体也不知道什么原因(如有知道的请评论告知,谢谢),去网上查了很多,代码写法确定
- 首先这个是7米当时问我一个问题,不过可惜我不知道怎么解决,后来知道解决方法很简单,只是添加了一个margin-top:-1em就
- pyecharts显示数据为百分比的柱状图pyecharts是做数据分析的好帮手,柱状图比较简单,网站例子不够多,一般柱状图就是直接传两组数
- 我们在进行程序操作的时候,因为各种原因,需要通过不同的形式返回到之前的对象。不知道小伙伴们会几种返回的函数方法呢?今天要介绍的是findal
- 本文使用python的第三方模块requests爬取王者荣耀所有英雄的图片,并将图片按每个英雄为一个目录存入文件夹中,方便用作桌面壁纸下面时
- 对shuffle=True的理解:之前不了解shuffle的实际效果,假设有数据a,b,c,d,不知道batch_size=2后打乱,具体是
- 说到机器学习,大家首先想到的可能就是Python和算法了,其实光有Python和算法是不够的,数据才是进行机器学习的前提。大多数的数据都会存
- 本文实例讲述了Python随机数用法。分享给大家供大家参考,具体如下:1. random.seed(int)给随机数对象一个种子值,用于产生
- 本节介绍 Python 中的另一个常用模块 —— statistics模块,该模块提供了用于计算数字数据的数理统计量的函数。它包含了很多函数
- 简介本文主要给大家介绍了关于go语言安装使用protobuf的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。pr
- MySQL 数据(字段)类型在创建表的时候,要明确定义字段对应的数据类型。MySQL 主要的数据类型分为数值类型、字符串(文本)类型、时间日
- 写在前面:这次我主要想总结一下微信小程序实现上下滚动消息提醒,主要是利用swiper组件来实现,swiper组件在小程序中是滑块视图容器。我
- 字典dict_fruit = {'apple':'苹果','banana':'香蕉&
- 一、StreamVR问题:1.运行项目时不显示手柄控制器:出现这种情况一般会在头显中提示不能加载按键配置文件,出现这种提示时请直接打开ste