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实现字典依据value排序
Feb 24 Python
Python实现导出数据生成excel报表的方法示例
Jul 12 Python
[原创]教女朋友学Python3(二)简单的输入输出及内置函数查看
Nov 30 Python
Python将DataFrame的某一列作为index的方法
Apr 08 Python
selenium+python 去除启动的黑色cmd窗口方法
May 22 Python
python抓取需要扫微信登陆页面
Apr 29 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
May 04 Python
Python 读取WAV音频文件 画频谱的实例
Mar 14 Python
matplotlib.pyplot.matshow 矩阵可视化实例
Jun 16 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
Jan 09 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
Jan 29 Python
Python Pygame实战在打砖块游戏的实现
Mar 17 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
解析thinkphp基本配置 convention.php
2013/06/18 PHP
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
PHP调用.NET的WebService 简单实例
2015/03/27 PHP
PHP模拟asp.net的StringBuilder类实现方法
2015/08/08 PHP
php文件上传及下载附带显示文件及目录功能
2017/04/27 PHP
js 目录列举函数
2008/11/06 Javascript
JavaScript将字符串转换成字符编码列表的方法
2015/03/19 Javascript
AngularJS基础知识笔记之表格
2015/05/10 Javascript
js点击文本框后才加载验证码实例代码
2015/10/20 Javascript
jQuery实现简单的回到顶部totop功能示例
2017/10/16 jQuery
Bootstrap实现下拉菜单多级联动
2017/11/23 Javascript
Angular 组件之间的交互的示例代码
2018/03/24 Javascript
Vue批量图片显示时遇到的路径被解析问题
2019/03/28 Javascript
react写一个select组件的实现代码
2019/04/03 Javascript
node实现简单的增删改查接口实例代码
2019/08/22 Javascript
angular组件间传值测试的方法详解
2020/05/07 Javascript
JS PHP字符串截取函数实现原理解析
2020/08/29 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
vue-router 按需加载 component: () =&gt; import() 报错的解决
2020/09/22 Javascript
在Angular项目使用socket.io实现通信的方法
2021/01/05 Javascript
Python读取mp3中ID3信息的方法
2015/03/05 Python
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
2017/11/17 Python
ubuntu环境下python虚拟环境的安装过程
2018/01/07 Python
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
python+selenium 脚本实现每天自动登记的思路详解
2020/03/11 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
2020/05/20 Python
Python实现异步IO的示例
2020/11/05 Python
森海塞尔美国官网:Sennheiser耳机与耳麦
2017/07/19 全球购物
NHL官方在线商店:Shop.NHL.com
2020/05/01 全球购物
管理专员自荐信
2014/01/26 职场文书
手机被没收检讨书
2014/02/22 职场文书
幼儿园中班上学期评语
2014/04/18 职场文书
医疗器械售后服务承诺书
2014/05/21 职场文书
2014年政务公开工作总结
2014/12/09 职场文书
幼儿园六一儿童节主持词
2015/06/30 职场文书
vue打包时去掉所有的console.log
2022/04/10 Vue.js