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素数检测实例分析
Jun 15 Python
python for 循环获取index索引的方法
Feb 01 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
Feb 14 Python
python自定义时钟类、定时任务类
Feb 22 Python
查看Python依赖包及其版本号信息的方法
Aug 13 Python
python3.6中@property装饰器的使用方法示例
Aug 17 Python
简单了解Django ORM常用字段类型及参数配置
Jan 07 Python
python实现跨excel sheet复制代码实例
Mar 03 Python
python 双循环遍历list 变量判断代码
May 04 Python
Python SMTP配置参数并发送邮件
Jun 16 Python
浅谈Python 函数式编程
Jun 20 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(1) php开发环境配置
2010/02/15 PHP
php ZipArchive压缩函数详解实例
2013/11/06 PHP
php简单复制文件的方法
2016/05/09 PHP
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
php实现留言板功能(会话控制)
2017/05/23 PHP
详解PHP队列的实现
2019/03/14 PHP
Prototype使用指南之array.js
2007/01/10 Javascript
js判断undefined变量类型使用typeof
2013/06/03 Javascript
jquery实现保存已选用户
2014/07/21 Javascript
Javascript基础知识(二)事件
2014/09/29 Javascript
JavaScript中exec函数用法实例分析
2015/06/08 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
2016/10/18 Javascript
Vue.js实现无限加载与分页功能开发
2016/11/03 Javascript
微信小程序 地图map实例详解
2017/06/07 Javascript
基于jQuery.i18n实现web前端的国际化
2018/05/04 jQuery
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
[03:12]2016完美“圣”典风云人物:单车专访
2016/12/02 DOTA
[42:32]Secret vs Optic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
python中查看变量内存地址的方法
2015/05/05 Python
解决Python 函数声明先后顺序出现的问题
2020/09/02 Python
使用CSS3滤镜的filter:blur属性制作毛玻璃模糊效果的方法
2016/07/08 HTML / CSS
印尼旅游网站:via
2017/11/12 全球购物
瑞典廉价机票预订网站:Seat24
2018/06/19 全球购物
Goodee官方商店:迷你投影仪
2021/03/15 全球购物
外语系大学生自荐信范文
2014/03/01 职场文书
学校政风行风评议工作总结
2014/10/21 职场文书
上市公司财务总监岗位职责
2015/04/03 职场文书
任命书格式范文
2015/09/22 职场文书
FFmpeg视频处理入门教程(新手必看)
2022/01/22 杂记
Python中的嵌套循环详情
2022/03/23 Python
mysql中数据库覆盖导入的几种方式总结
2022/03/25 MySQL
Nginx速查手册及常见问题
2022/04/07 Servers
实战Python爬虫爬取酷我音乐
2022/04/11 Python
Python使用Beautiful Soup(BS4)库解析HTML和XML
2022/06/05 Python
shell进度条追踪指令执行时间的场景分析
2022/06/16 Servers