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 相关文章推荐
Python3实现从指定路径查找文件的方法
May 22 Python
Python DataFrame 设置输出不显示index(索引)值的方法
Jun 07 Python
在python中对变量判断是否为None的三种方法总结
Jan 23 Python
Python django框架应用中实现获取访问者ip地址示例
May 17 Python
使用Windows批处理和WMI设置Python的环境变量方法
Aug 14 Python
django写用户登录判定并跳转制定页面的实例
Aug 21 Python
Python高级特性——详解多维数组切片(Slice)
Nov 26 Python
详解python opencv、scikit-image和PIL图像处理库比较
Dec 26 Python
Python 写了个新型冠状病毒疫情传播模拟程序
Feb 14 Python
如何实现一个python函数装饰器(Decorator)
Oct 12 Python
Python中seaborn库之countplot的数据可视化使用
Jun 11 Python
Python中使用Opencv开发停车位计数器功能
Apr 04 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也可以?成Shell Script
2006/10/09 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
PHP模板引擎Smarty内建函数详解
2016/04/11 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
js利用div背景,做一个竖线的效果。
2008/11/22 Javascript
谷歌浏览器 insertCell与appendChild的区别
2009/02/12 Javascript
javascript实现简单的进度条
2015/07/02 Javascript
JavaScript实现文字跟随鼠标特效
2015/08/06 Javascript
JS实现超简单的仿QQ折叠菜单效果
2015/09/21 Javascript
简单实现jQuery进度条轮播实例代码
2016/06/20 Javascript
jquery,js简单实现类似Angular.js双向绑定
2017/01/13 Javascript
微信小程序实现顶部普通选项卡效果(非swiper)
2020/06/19 Javascript
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
微信小程序支付及退款流程详解
2017/11/30 Javascript
解决vue 按钮多次点击重复提交数据问题
2018/05/10 Javascript
微信小程序webview实现长按点击识别二维码功能示例
2019/01/24 Javascript
layui之数据表格--与后台交互获取数据的方法
2019/09/29 Javascript
JS window对象简单操作完整示例
2020/01/14 Javascript
如何基于js判断浏览器版本
2020/02/20 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
基于循环神经网络(RNN)实现影评情感分类
2018/03/26 Python
Python3中的json模块使用详解
2018/05/05 Python
python re.sub()替换正则的匹配内容方法
2019/07/22 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
2019/10/25 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
2019/12/25 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
2020/03/02 Python
html如何对span设置宽度
2019/10/30 HTML / CSS
美国二手复古奢侈品包包购物网站:LXRandCo
2019/06/18 全球购物
农村婚礼证婚词
2014/01/08 职场文书
创建省级文明单位实施方案
2014/02/27 职场文书
库房保管员岗位职责
2014/04/07 职场文书
廉洁自律证明
2015/06/24 职场文书
2016消防宣传标语口号
2015/12/26 职场文书
幼儿园教师心得体会范文
2016/01/21 职场文书
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
2021/05/14 Python
nginx中proxy_pass各种用法详解
2021/11/07 Servers