用python wxpy管理微信公众号并利用微信获取自己的开源数据


Posted in Python onJuly 30, 2019

之前了解到itchat 乃至于 wxpy时 是利用tuling聊天机器人的接口。调用接口并保存双方的问答结果可以作为自己的问答词库的一个数据库累计。这些数据可以用于自己训练。

而最近希望获取一些语音资源,用于卷积神经网络的训练。。

--------------------------------------------------------------------------------

首先wxpy是itchat的升级版,通过wxpy bot.core即可原封不动的调用itchat的指令。

可以实现的简单功能:

1. 调取所有微信好友的信息,包括头像,签名,地区,等信息。

# -*- coding: utf-8 -*-
"""
Created on Fri Jul 19 17:10:01 2019
 
@author: wenzhe.tian
"""
import wxpy as wp
from collections import defaultdict
import pandas as pd
from tkinter import messagebox
import os

#初始化机器人,选择缓存模式(扫码)登录
bot = wp.Bot(cache_path=True)

friend = bot.core.get_friends(update=True)[0:]
num = 0
for f in friend:
 image = bot.core.get_head_img(userName=f["UserName"]) #用 itchat.get_head_img(userName=None)来爬取好友列表的头像
 fileImage = open(str(num) + ".jpg",'wb') #将好友头像下载到本地
 fileImage.write(image)
 fileImage.close()
 num += 1

friend=pd.DataFrame(friend) 
friend.to_excel('friend.xlsx',sheet_name='Friend_Info')#所有朋友相关资料存为excel

根据上面可以做一些头像集合,或者微信好友的动态图表统计。

2.  消息回复

bot.friends().search('老九门里排第十')[0].send('[强]') #表示回复给 '老九门里排第十' 点赞符号 相当于 friends.search()

-------------------------------------------------------------------------------

然而这些不能满足一些高级的需求比如:

1.可以自动将录音,视频,图像,聊天记录等按照档案记录下来。(此处修改可操作连接图灵机器人,将提问和回答的信息记录下来。作为自己训练的原始数据集)

其中 全局参数 global temp:

temp是一个list,可以将最近的消息加入list,该消息信息是字典格式的所有消息包含的原始数据。 比如消息类型,发送人,接收人等等。

# -*- coding: utf-8 -*-
"""
Created on Fri Jul 19 13:10:01 2019

@author: wenzhe.tian
"""
import wxpy as wp
from collections import defaultdict
import pandas as pd
from tkinter import messagebox
import os

bot = wp.Bot(cache_path=True)
chats=bot.chats() # 所有开启了聊天窗口的对象
groups=bot.groups() # 所有群的对象
friends=bot.friends() # 所有好友的对象
mps=bot.mps() # 所有公众号的对象

@bot.register()

def print_messages(msg):
 print(msg.create_time,msg)
 global temp
 if msg.sender.nick_name in message.keys():
  message[msg.sender.nick_name].append(msg.raw)
 else:
  message[msg.sender.nick_name]=[]
  message[msg.sender.nick_name].append(msg.raw)
 
 path='C:\\Users\\wenzhe.tian\\Desktop\\send_mail\\wechat_infomation\\'; # 修改为希望存储聊天,推送,图片,视频,音频等信息的地址
 if os.path.exists(path+msg.sender.nick_name)==False:
  os.makedirs(path+msg.sender.nick_name)
 if msg.type=='Text':
  f = open(path+msg.sender.nick_name+'\\message.txt','a+',encoding='utf-8')
  f.read()
  f.write('\n')
  f.write(str(msg.create_time)+msg.text)
  f.close()
 else:
  print('非文字消息,已存储')
  if '.' in msg.file_name:
   msg.get_file(save_path=path+msg.sender.nick_name+'\\'+msg.file_name)
  else:
   msg.get_file(save_path=path+msg.sender.nick_name+'\\'+msg.file_name+'.txt')

              用python wxpy管理微信公众号并利用微信获取自己的开源数据 用python wxpy管理微信公众号并利用微信获取自己的开源数据                         

 如上图: 所有新回复的消息会自动创建 代码里path下的文件夹,视频,录音等非文字内容会直接下载,推送等html格式的消息会当做文字和聊天记录一同保存下来记录到message.txt里

文字可以用于训练,亦可用于词云等生成。 

2.可以管理微信公众号,比如根据对方的输入自动从调取数据回复,或者固定转发某些来源的推送。

# 定位公司群
company_group = ensure_one(bot.groups().search('公司微信群'))

# 定位老板
boss = ensure_one(company_group.search('BOSS'))

# 将老板的消息转发到文件传输助手
@bot.register(company_group)
def forward_boss_message(msg):
 if msg.member == boss:
  msg.forward(bot.file_helper, prefix='BOSS')

3. 针对某人的自动回复,此处可设定词汇和回复内容(比如html格式的推送或者链接)来实现微信公众号的一些运营。

 具体用法如下:

@ bot.register() 的括号内必须为一个对象,比如上文是一个公司的群,是从所有群中搜索名字 '公司微信群' ,我们之前定义的

groups=bot.groups() # 所有群的对象
friends=bot.friends() # 所有好友的对象
mps=bot.mps() # 所有公众号的对象

均是对象的集合,从中筛选即可,比如想要自动回复 老九门里排第十 这个人的所有text类型的消息。即

laojiu= friends.search('老九门里排第十')[0] # 这里其实默认搜索的是nickname

然后:

@bot.register([laojiu, groups], TEXT) # 此处表示对laojiu 和所有groups里的对象的text类型的消息做操作

def auto_reply(msg):
 # 如果是群聊,但没有被 @,则不回复
 if isinstance(msg.chat, Group) and not msg.is_at:
  return
 else:
  # 回复消息内容和类型
  return '收到消息: {} ({})'.format(msg.text, msg.type)

暂时更新到这里,以上。

总结

以上所述是小编给大家介绍的用python wxpy管理微信公众号并利用微信获取自己的开源数据,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python使用urllib2提交http post请求的方法
May 26 Python
python实现发送邮件功能
Jul 22 Python
python绘制条形图方法代码详解
Dec 19 Python
python高阶爬虫实战分析
Jul 29 Python
python实现串口自动触发工作的示例
Jul 02 Python
Django CBV类的用法详解
Jul 26 Python
如何使用python3获取当前路径及os.path.dirname的使用
Dec 13 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
Jan 20 Python
使用python计算三角形的斜边例子
Apr 15 Python
在Keras中利用np.random.shuffle()打乱数据集实例
Jun 15 Python
keras实现多GPU或指定GPU的使用介绍
Jun 17 Python
appium+python自动化配置(adk、jdk、node.js)
Nov 17 Python
Python实现二叉搜索树BST的方法示例
Jul 30 #Python
django 基于中间件实现限制ip频繁访问过程详解
Jul 30 #Python
python3安装crypto出错及解决方法
Jul 30 #Python
Django框架组成结构、基本概念与文件功能分析
Jul 30 #Python
Python实现性能自动化测试竟然如此简单
Jul 30 #Python
python爬虫 execjs安装配置及使用
Jul 30 #Python
python 实现识别图片上的数字
Jul 30 #Python
You might like
php jquery 实现新闻标签分类与无刷新分页
2009/12/18 PHP
PHP实现路由映射到指定控制器
2016/08/13 PHP
javascript 检测浏览器类型和版本的代码
2009/09/15 Javascript
菜鸟javascript基础资料整理3 正则
2010/12/06 Javascript
Javascript处理DOM元素事件实现代码
2012/05/23 Javascript
js实现类似MSN提示的页面效果代码分享
2015/08/24 Javascript
js jquery获取当前元素的兄弟级 上一个 下一个元素
2015/09/01 Javascript
javascript中Date format(js日期格式化)方法小结
2015/12/17 Javascript
JavaScript中Array对象用法实例总结
2016/11/29 Javascript
jQuery布局组件EasyUI Layout使用方法详解
2017/02/28 Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
2017/03/01 Javascript
js判断输入框不能为空格或null值的实现方法
2018/03/02 Javascript
JavaScript判断数组类型的方法
2019/10/23 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
vue实现从外部修改组件内部的变量的值
2020/07/30 Javascript
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
Python实现把json格式转换成文本或sql文件
2015/07/10 Python
Python实现简单的HttpServer服务器示例
2017/09/25 Python
Python面向对象class类属性及子类用法分析
2018/02/02 Python
Python3处理HTTP请求的实例
2018/05/10 Python
详解从Django Rest Framework响应中删除空字段
2019/01/11 Python
使用python画社交网络图实例代码
2019/07/10 Python
python实现tail -f 功能
2020/01/17 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
python中关于数据类型的学习笔记
2020/07/19 Python
python 操作excel表格的方法
2020/12/05 Python
国外平面设计素材网站:The Hungry JPEG
2017/03/28 全球购物
伦敦一家领先的精品零售商:IRIS Fashion
2019/05/24 全球购物
环境科学专业优秀毕业生自荐书
2014/02/03 职场文书
新教师个人总结
2015/02/06 职场文书
2019年暑期安全广播稿!
2019/07/03 职场文书
再次探讨go实现无限 buffer 的 channel方法
2021/06/13 Golang
JS的深浅复制详细
2021/10/16 Javascript
Pygame Draw绘图函数的具体使用
2021/11/17 Python
Python实现为PDF去除水印的示例代码
2022/04/03 Python
Python时间操作之pytz模块使用详解
2022/06/14 Python