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控制台英汉汉英电子词典
Apr 23 Python
对于Python的框架中一些会话程序的管理
Apr 20 Python
详解Python字符串对象的实现
Dec 24 Python
python 循环遍历字典元素的简单方法
Sep 11 Python
详解python selenium 爬取网易云音乐歌单名
Mar 28 Python
在Python中os.fork()产生子进程的例子
Aug 08 Python
Python操作MongoDb数据库流程详解
Mar 05 Python
python 双循环遍历list 变量判断代码
May 04 Python
python爬虫判断招聘信息是否存在的实例代码
Nov 20 Python
matplotlib制作雷达图报错ValueError的实现
Jan 05 Python
总结Pyinstaller打包的高级用法
Jun 28 Python
Python中的pprint模块
Nov 27 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中的escape函数
2013/06/29 PHP
Yii2针对指定url的生成及图片等的引入方法小结
2016/07/18 PHP
强大的jquery插件jqeuryUI做网页对话框效果!简单
2011/04/14 Javascript
用原生JS获取CLASS对象(很简单实用)
2014/10/15 Javascript
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
2015/04/25 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
浅谈JS函数节流防抖
2017/10/18 Javascript
vue服务端渲染页面缓存和组件缓存的实例详解
2018/09/18 Javascript
小程序登录态管理的方法示例
2018/11/13 Javascript
jQuery AJAX与jQuery事件的分析讲解
2019/02/18 jQuery
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
vue自动路由-单页面项目(非build时构建)
2019/04/30 Javascript
浅谈Vue为什么不能检测数组变动
2019/10/14 Javascript
微信小程序批量上传图片到七牛(推荐)
2019/12/19 Javascript
JS一次前端面试经历记录
2020/03/19 Javascript
Vue使用预渲染代替SSR的方法
2020/07/02 Javascript
[28:57]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/16 DOTA
Python中用于转换字母为小写的lower()方法使用简介
2015/05/19 Python
使用Python生成随机密码的示例分享
2016/02/18 Python
Python入门_浅谈数据结构的4种基本类型
2017/05/16 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
2019/02/22 Python
如何更优雅地写python代码
2019/07/02 Python
Python异常处理例题整理
2019/07/07 Python
Python 内置变量和函数的查看及说明介绍
2019/12/25 Python
如何使用python实现模拟鼠标点击
2020/01/06 Python
如何查看Django ORM执行的SQL语句的实现
2020/04/20 Python
python中shell执行知识点
2020/05/06 Python
英国玛莎百货美国官网:Marks & Spencer美国
2018/11/06 全球购物
建筑工程专业大学生求职信
2014/04/23 职场文书
村庄绿化方案
2014/05/07 职场文书
2014年妇委会工作总结
2014/12/10 职场文书
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
2021/08/30 Java/Android
Vue 打包后相对路径的引用问题
2022/06/05 Vue.js