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正则表达式操作指南(re使用)
Sep 06 Python
利用信号如何监控Django模型对象字段值的变化详解
Nov 27 Python
利用python将xml文件解析成html文件的实现方法
Dec 22 Python
python 按不同维度求和,最值,均值的实例
Jun 28 Python
python 平衡二叉树实现代码示例
Jul 07 Python
10个Python小技巧你值得拥有
Sep 29 Python
python对一个数向上取整的实例方法
Jun 18 Python
Pytorch生成随机数Tensor的方法汇总
Sep 09 Python
windows+vscode安装paddleOCR运行环境的步骤
Nov 11 Python
Python 利用argparse模块实现脚本命令行参数解析
Dec 28 Python
python实现简单文件读写函数
Feb 25 Python
关于python中模块和重载的问题
Nov 02 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
PHP定时执行任务的3种方法详解
2015/12/21 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
php从数据库中读取特定的行(实例)
2017/06/02 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
laravel 解决Validator使用中出现的问题
2019/10/25 PHP
JavaScript 异步调用框架 (Part 6 - 实例 &amp; 模式)
2009/08/04 Javascript
jquery选择器-根据多个属性选择示例代码
2013/10/21 Javascript
JS实现定时页面弹出类似QQ新闻的提示框
2013/11/07 Javascript
基于jquery异步传输json数据格式实例代码
2013/11/23 Javascript
javascript中的取反再取反~~没有意义
2014/04/06 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
2014/12/08 Javascript
jquery实现简单Tab切换菜单效果
2020/07/17 Javascript
微信小程序 wxapp内容组件 icon详细介绍
2016/10/31 Javascript
详解javascript获取url信息的常见方法
2016/12/19 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
webpack 模块热替换原理
2018/04/09 Javascript
简谈创建React Component的几种方式
2019/06/15 Javascript
vue自定义switch开关组件,实现样式可自行更改
2019/11/01 Javascript
Javascript查看大图功能代码实现
2020/05/07 Javascript
微信小程序实现日历签到
2020/09/21 Javascript
python操作字典类型的常用方法(推荐)
2016/05/16 Python
Python实现Pig Latin小游戏实例代码
2018/02/02 Python
数据清洗--DataFrame中的空值处理方法
2018/07/03 Python
python 多线程中子线程和主线程相互通信方法
2018/11/09 Python
Python openpyxl模块原理及用法解析
2020/01/19 Python
python3 中时间戳、时间、日期的转换和加减操作
2020/07/14 Python
Python collections模块的使用方法
2020/10/09 Python
HTML5样式控制示例代码
2013/11/27 HTML / CSS
Skyscanner波兰:廉价航班
2017/11/07 全球购物
植村秀美国官网:Shu Uemura美国
2019/03/19 全球购物
乌克兰数字设备、配件和智能技术的连锁商店:KTC
2020/08/18 全球购物
小学语文教学经验交流材料
2014/06/02 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
成本会计岗位职责
2015/02/03 职场文书
会议承办单位欢迎词
2019/07/09 职场文书
Python可变集合和不可变集合的构造方法大全
2021/12/06 Python