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获得一个月有多少天的方法
Jun 04 Python
Python的IDEL增加清屏功能实例
Jun 19 Python
python编程实现12306的一个小爬虫实例
Dec 27 Python
java判断三位数的实例讲解
Jun 10 Python
Python学习笔记之文件的读写操作实例分析
Aug 07 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
Dec 04 Python
python数据库编程 ODBC方式实现通讯录
Mar 27 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
Apr 08 Python
python连接mysql数据库并读取数据的实现
Sep 25 Python
Django debug为True时,css加载失败的解决方案
Apr 24 Python
Python实现DBSCAN聚类算法并样例测试
Jun 22 Python
Python echarts实现数据可视化实例详解
Mar 03 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
支持oicq头像的留言簿(一)
2006/10/09 PHP
php 操作调试的方法
2012/07/12 PHP
PHP缓存技术的多种方法小结
2012/08/14 PHP
php 读取文件头判断文件类型的实现代码
2013/08/05 PHP
分享一个超好用的php header下载函数
2014/01/31 PHP
Ajax和PHP正则表达式验证表单及验证码
2016/09/24 PHP
php传值方式和ajax的验证功能
2017/03/27 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
Extjs学习过程中新手容易碰到的低级错误积累
2010/02/11 Javascript
基于jquery的返回顶部效果(兼容IE6)
2011/01/17 Javascript
Extjs优化(二)Form表单提交通用实现
2013/04/15 Javascript
JQuery触发事件例如click
2013/09/11 Javascript
javascript简单性能问题及学习笔记
2014/02/04 Javascript
node.js中的fs.lchmodSync方法使用说明
2014/12/16 Javascript
AngularJS基础 ng-dblclick 指令用法
2016/08/01 Javascript
超简单的Vue.js环境搭建教程
2017/03/17 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
微信小程序自定义带价格显示日历效果
2018/12/29 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
js实现淘宝浏览商品放大镜功能
2020/10/28 Javascript
Vue 列表页带参数进详情页的操作(router-link)
2020/11/13 Javascript
Python生成随机数的方法
2014/01/14 Python
Python3里的super()和__class__使用介绍
2015/04/23 Python
让Python代码更快运行的5种方法
2015/06/21 Python
ubuntu环境下python虚拟环境的安装过程
2018/01/07 Python
Selenium 模拟浏览器动态加载页面的实现方法
2018/05/16 Python
python实现大转盘抽奖效果
2019/01/22 Python
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
关于Java String的一道面试题
2013/09/29 面试题
优秀求职信范文分享
2014/01/26 职场文书
美术指导求职信
2014/03/17 职场文书
年度考核自我鉴定
2014/03/19 职场文书
多媒体编辑专业毕业生求职信
2014/06/13 职场文书
天堂的孩子观后感
2015/06/11 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
Linux中文件的基本属性介绍
2022/06/01 Servers