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爬虫之使用Scrapy框架编写爬虫
Nov 07 Python
深入理解Django中内置的用户认证
Oct 06 Python
使用Python的Django和layim实现即时通讯的方法
May 25 Python
Python实现Selenium自动化Page模式
Jul 14 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
Aug 19 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
Dec 06 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
Jan 10 Python
Python内置方法和属性应用:反射和单例(推荐)
Jun 19 Python
Python基于execjs运行js过程解析
Nov 27 Python
Python制作简单的剪刀石头布游戏
Dec 10 Python
Python自动化之批量处理工作簿和工作表
Jun 03 Python
python3+PyQt5+Qt Designer实现界面可视化
Jun 10 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+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
phplot生成图片类用法详解
2015/01/06 PHP
PHP整合PayPal支付
2015/06/11 PHP
CodeIgniter连贯操作的底层原理分析
2016/05/17 PHP
javascript的对话框详解与参数
2007/03/08 Javascript
jQuery 使用手册(五)
2009/09/23 Javascript
如何使用Javascript获取距今n天前的日期
2013/07/08 Javascript
JS数组的遍历方式for循环与for...in
2014/07/31 Javascript
jQuery模拟原生态App上拉刷新下拉加载更多页面及原理
2015/08/10 Javascript
javascript函数自动执行常用方法汇总
2016/03/28 Javascript
BootStrap智能表单实战系列(九)表单图片上传的支持
2016/06/13 Javascript
JS实现的自定义水平滚动字体插件完整实例
2016/06/17 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
vue2.0获取鼠标位置的方法
2018/09/13 Javascript
JavaScript 实现HTML DOM增删改查操作的常见方法详解
2020/01/04 Javascript
优化Vue中date format的性能详解
2020/01/13 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
2020/06/01 Javascript
在Linux下调试Python代码的各种方法
2015/04/17 Python
Python中Django发送带图片和附件的邮件
2017/03/31 Python
Python文件如何引入?详解引入Python文件步骤
2018/12/10 Python
Python 线程池用法简单示例
2019/10/02 Python
python向图片里添加文字
2019/11/26 Python
Django REST Swagger实现指定api参数
2020/07/07 Python
Scrapy 配置动态代理IP的实现
2020/09/28 Python
纽约通行卡:The New York Pass(免费游览纽约90多个景点)
2017/07/29 全球购物
印尼太阳百货公司网站:Matahari
2018/02/04 全球购物
DJI大疆德国官方商城:大疆无人机
2018/09/01 全球购物
公司营业员的工作总结自我评价
2013/10/05 职场文书
中专毕业自我鉴定
2013/10/16 职场文书
房地产开发计划书
2014/01/10 职场文书
企业文明单位申报材料
2014/05/16 职场文书
班主任与学生安全责任书
2014/07/25 职场文书
小城镇建设汇报材料
2014/08/16 职场文书
2014年就业工作总结
2014/11/26 职场文书
赢在中国观后感
2015/06/02 职场文书
2015年街道办事处团委工作总结
2015/10/14 职场文书