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统计列表中的重复项出现的次数的方法
Aug 18 Python
Python 列表list使用介绍
Nov 30 Python
Django中多种重定向方法使用详解
Jul 17 Python
python自动化测试之DDT数据驱动的实现代码
Jul 23 Python
简单了解python变量的作用域
Jul 30 Python
解析python 中/ 和 % 和 //(地板除)
Jun 28 Python
推荐技术人员一款Python开源库(造数据神器)
Jul 08 Python
通过案例解析python鸭子类型相关原理
Oct 10 Python
Python+OpenCV图像处理—— 色彩空间转换
Oct 22 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
Jan 29 Python
Python超简单容易上手的画图工具库推荐
May 10 Python
教你如何使用Python开发一个钉钉群应答机器人
Jun 21 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
如何将一个表单同时提交到两个地方处理
2006/10/09 PHP
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
ajax+php打造进度条 readyState各状态
2010/03/20 PHP
php实现图形显示Ip地址的代码及注释
2014/01/20 PHP
PHP多维数组转一维数组的简单实现方法
2015/12/23 PHP
php获取一定范围内取N个不重复的随机数
2016/05/28 PHP
服务器安全设置的几个注册表设置
2007/07/28 Javascript
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
JS保留两位小数 四舍五入函数的小例子
2013/11/20 Javascript
深入理解javascript的执行顺序
2014/04/04 Javascript
javascript模拟post提交隐藏地址栏的参数
2014/09/03 Javascript
jQuery超赞的评分插件(8款)
2015/08/20 Javascript
javascript插件开发的一些感想和心得
2016/02/28 Javascript
js动态生成form 并用ajax方式提交的实现方法
2016/09/09 Javascript
浅谈jQuery双事件多重加载的问题
2016/10/05 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
js中字符型和数值型数字的互相转化方法(必看)
2017/04/25 Javascript
react项目实践之webpack-dev-serve
2018/09/14 Javascript
解决JS表单验证只有第一个IF起作用的问题
2018/12/04 Javascript
Vue基本使用之对象提供的属性功能
2019/04/30 Javascript
微信小程序把百度地图坐标转换成腾讯地图坐标过程详解
2019/07/10 Javascript
vue组件传值的实现方式小结【三种方式】
2020/02/05 Javascript
详细探究Python中的字典容器
2015/04/14 Python
Python中functools模块函数解析
2017/03/12 Python
Python使用Django实现博客系统完整版
2020/09/29 Python
Python实现堡垒机模式下远程命令执行操作示例
2019/05/09 Python
Pytoch之torchvision.transforms图像变换实例
2019/12/30 Python
Python基于Socket实现简易多人聊天室的示例代码
2020/11/29 Python
python 如何对logging日志封装
2020/12/02 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
2021/01/30 Python
HTML5 实战PHP之Web页面表单设计
2011/10/09 HTML / CSS
劳动模范事迹材料
2014/01/19 职场文书
迎新生标语大全
2014/10/06 职场文书
2014年社区工会工作总结
2014/12/18 职场文书
公司员工培训管理制度
2015/08/04 职场文书
如何用JavaScript检测当前浏览器是无头浏览器
2021/04/27 Javascript