Python使用微信itchat接口实现查看自己微信的信息功能详解


Posted in Python onAugust 22, 2019

本文实例讲述了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使用微信itchat接口实现查看自己微信的信息功能详解

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python使用在线API查询IP对应的地理位置信息实例
Jun 01 Python
使用Python编写Linux系统守护进程实例
Feb 03 Python
详细介绍Python函数中的默认参数
Mar 30 Python
星球大战与Python之间的那些事
Jan 07 Python
Python编写一个优美的下载器
Apr 15 Python
selenium+python实现自动登录脚本
Apr 22 Python
Python图像处理之gif动态图的解析与合成操作详解
Dec 30 Python
Python提取频域特征知识点浅析
Mar 04 Python
pytorch中的inference使用实例
Feb 20 Python
python如何保存文本文件
Jun 07 Python
Python绘制数码晶体管日期
Feb 19 Python
用python批量解压带密码的压缩包
May 31 Python
简单了解python 生成器 列表推导式 生成器表达式
Aug 22 #Python
Python实现的微信红包提醒功能示例
Aug 22 #Python
Python PIL图片添加字体的例子
Aug 22 #Python
在python image 中安装中文字体的实现方法
Aug 22 #Python
解决Python3用PIL的ImageFont输出中文乱码的问题
Aug 22 #Python
用Pelican搭建一个极简静态博客系统过程解析
Aug 22 #Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
Aug 22 #Python
You might like
js变量以及其作用域详解
2020/07/18 Javascript
常用js字符串判断方法整理
2013/10/18 Javascript
详解jQuery向动态生成的内容添加事件响应jQuery live()方法
2015/11/02 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
2016/05/17 Javascript
jQuery多文件异步上传带进度条实例代码
2016/08/16 Javascript
JavaScript组成、引入、输出、运算符基础知识讲解
2016/12/08 Javascript
angularjs实现多张图片上传并预览功能
2017/02/24 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
微信小程序 自动登陆PHP源码实例(源码下载)
2017/05/08 Javascript
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
2018/03/01 Javascript
JS封装的模仿qq右下角消息弹窗功能示例
2018/08/22 Javascript
js jquery 获取某一元素到浏览器顶端的距离实现方法
2018/09/05 jQuery
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
2020/03/10 Javascript
vue vant中picker组件的使用
2020/11/03 Javascript
[01:35:53]完美世界DOTA2联赛PWL S3 Magma vs GXR 第二场 12.13
2020/12/17 DOTA
Python Web框架Tornado运行和部署
2020/10/19 Python
python中logging包的使用总结
2018/02/28 Python
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
python绘制立方体的方法
2018/07/02 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
2019/01/19 Python
解决.ui文件生成的.py文件运行不出现界面的方法
2019/06/19 Python
学生会个人自荐书范文
2014/02/12 职场文书
小学生手册家长评语
2014/04/16 职场文书
《三亚落日》教学反思
2014/04/26 职场文书
工作会议方案
2014/05/21 职场文书
销售竞赛活动方案
2014/08/23 职场文书
2014年妇委会工作总结
2014/12/10 职场文书
入党转正申请报告
2015/05/15 职场文书
盗窃罪辩护词范文
2015/05/21 职场文书
python疲劳驾驶困倦低头检测功能的实现
2022/04/04 Python
Python OpenCV形态学运算示例详解
2022/04/07 Python
windows10声卡驱动怎么安装?win10声卡驱动安装操作步骤教程
2022/08/05 数码科技
JS实现刷新网页后之前浏览位置保持不变示例详解
2022/08/14 Javascript