用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写的windows服务不能启动的问题
Apr 15 Python
python之yield表达式学习
Sep 02 Python
Python图像灰度变换及图像数组操作
Jan 27 Python
Django之模型层多表操作的实现
Jan 08 Python
Django 源码WSGI剖析过程详解
Aug 05 Python
python如何获取apk的packagename和activity
Jan 10 Python
python判断正负数方式
Jun 03 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
Jun 04 Python
python 抓取知乎指定回答下视频的方法
Jul 09 Python
通过实例简单了解Python sys.argv[]使用方法
Aug 04 Python
Python自动化测试基础必备知识点总结
Feb 07 Python
python 实现定时任务的四种方式
Apr 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的超级变量$_GET获取HTML表单(Form) 数据
2011/05/07 PHP
ThinkPHP自动验证失败的解决方法
2011/06/09 PHP
php中explode的负数limit用法分析
2015/02/27 PHP
php实现的简单检验登陆类
2015/06/18 PHP
win平台安装配置Nginx+php+mysql 环境
2016/01/12 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
2017/04/01 PHP
Ubuntu上安装yaf扩展的方法
2018/01/29 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
Javascript 面向对象编程(一) 封装
2011/08/28 Javascript
解析js原生方法创建表格效率测试
2013/07/08 Javascript
JS判断变量是否为空判断是否null
2014/07/25 Javascript
浅谈Cookie的生命周期问题
2016/08/02 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
2016/08/17 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
Angularjs中的ui-bootstrap的使用教程
2017/02/19 Javascript
详解用JS添加和删除class类名
2019/03/25 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
2019/04/25 Javascript
高效jQuery选择器的5个技巧实例分析
2019/11/26 jQuery
vue-router重写push方法,解决相同路径跳转报错问题
2020/08/07 Javascript
解决vue scoped scss 无效的问题
2020/09/04 Javascript
python 循环遍历字典元素的简单方法
2016/09/11 Python
Python测试网络连通性示例【基于ping】
2018/08/03 Python
python for循环输入一个矩阵的实例
2018/11/14 Python
python 模拟创建seafile 目录操作示例
2019/09/26 Python
python游戏开发的五个案例分享
2020/03/09 Python
高考考python编程是真的吗
2020/07/20 Python
前台文员个人求职信范文
2014/01/05 职场文书
党的群众路线剖析材料
2014/10/09 职场文书
实习生矿工检讨书
2014/10/13 职场文书
2014年幼儿园老师工作总结
2014/12/05 职场文书
2014年英语教研组工作总结
2014/12/06 职场文书
2015年秋季新学期寄语
2015/03/25 职场文书
2015年大学组织委员个人工作总结
2015/10/23 职场文书
python脚本框架webpy模板控制结构
2021/11/20 Python
MySQL生成千万测试数据以及遇到的问题
2022/08/05 MySQL