用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实现telnet服务器的方法
Jul 10 Python
Python卸载模块的方法汇总
Jun 07 Python
python结合selenium获取XX省交通违章数据的实现思路及代码
Jun 26 Python
python爬取m3u8连接的视频
Feb 28 Python
在Pycharm中修改文件默认打开方式的方法
Jan 17 Python
python+pyqt5编写md5生成器
Mar 18 Python
Django如何防止定时任务并发浅析
May 14 Python
Python 从subprocess运行的子进程中实时获取输出的例子
Aug 14 Python
python 实现turtle画图并导出图片格式的文件
Dec 07 Python
python数据分析:关键字提取方式
Feb 24 Python
python 工具 字符串转numpy浮点数组的实现
Mar 14 Python
python编程实现清理微信重复缓存文件
Nov 01 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简单系统数据添加以及数据删除模块源文件下载
2008/06/07 PHP
PHP设计模式之责任链模式的深入解析
2013/06/13 PHP
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
PHP等比例压缩图片的实例代码
2018/07/26 PHP
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
JavaScript 继承使用分析
2011/05/12 Javascript
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
jQuery实现单行文字间歇向上滚动源代码
2013/06/02 Javascript
js中onload与onunload的使用示例
2013/08/25 Javascript
js中同步与异步处理的方法和区别总结
2013/12/25 Javascript
jQuery获取和设置表单元素的方法
2014/02/14 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
js取整数、取余数的方法
2014/05/11 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
JavaScript三元运算符的多种使用技巧
2015/04/16 Javascript
javascript自定义右键弹出菜单实现方法
2015/05/25 Javascript
超实用的JavaScript表单代码段
2016/02/26 Javascript
Javascript中常见的逻辑题和解决方法
2016/09/17 Javascript
vue制作加载更多功能的正确打开方式
2016/10/12 Javascript
jquery编写日期选择器
2017/03/16 Javascript
php 解压zip压缩包内容到指定目录的实例
2018/01/23 Javascript
对vue中的事件穿透与禁止穿透实例详解
2019/10/28 Javascript
python翻译软件实现代码(使用google api完成)
2013/11/26 Python
Python内建数据结构详解
2016/02/03 Python
Python用imghdr模块识别图片格式实例解析
2018/01/11 Python
Django权限机制实现代码详解
2018/02/05 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
2020/04/14 Python
python 删除excel表格重复行,数据预处理操作
2020/07/06 Python
matplotlib教程——强大的python作图工具库
2020/10/15 Python
澳大利亚宠物商店:Petbarn
2017/11/18 全球购物
上课迟到检讨书300字
2014/10/15 职场文书
面试通知邮件
2015/04/20 职场文书
小学教师见习总结
2015/06/23 职场文书
三十年同学聚会致辞
2015/07/28 职场文书
新郎新娘致辞
2015/07/31 职场文书
让人瞬间清醒的句子,句句经典,字字如金
2019/07/08 职场文书