用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实现代理服务功能实例
Nov 15 Python
Python yield 小结和实例
Apr 25 Python
在MAC上搭建python数据分析开发环境
Jan 26 Python
Python3控制路由器——使用requests重启极路由.py
May 11 Python
基于python socketserver框架全面解析
Sep 21 Python
flask框架实现连接sqlite3数据库的方法分析
Jul 16 Python
python实现图片识别汽车功能
Nov 30 Python
Python实现网站表单提交和模板
Jan 15 Python
django和vue实现数据交互的方法
Aug 21 Python
Pytorch to(device)用法
Jan 08 Python
Python3打包exe代码2种方法实例解析
Feb 17 Python
Python实现七个基本算法的实例代码
Oct 08 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执行速度全攻略(下)
2006/10/09 PHP
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
2010/05/16 PHP
php-cli简介(不会Shell语言一样用Shell)
2013/06/03 PHP
php实现的美国50个州选择列表实例
2015/04/20 PHP
laravel 之 Eloquent 模型修改器和序列化示例
2019/10/17 PHP
使用Modello编写JavaScript类
2006/12/22 Javascript
JavaScript setTimeout和setInterval的使用方法 说明
2010/03/25 Javascript
js用typeof方法判断undefined类型
2014/07/15 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件体系结构
2015/11/19 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
2015/11/29 Javascript
易操作的jQuery表单提示插件
2015/12/01 Javascript
浏览器环境下JavaScript脚本加载与执行探析之defer与async特性
2016/01/14 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
2016/05/31 Javascript
js实现五星评价功能
2017/03/08 Javascript
微信小程序中用WebStorm使用LESS
2017/03/08 Javascript
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
Node.js的Koa实现JWT用户认证方法
2018/05/05 Javascript
Javascript 实现 Excel 导入生成图表功能
2018/10/22 Javascript
JSON字符串操作移除空串更改key/value的介绍
2019/01/05 Javascript
vue动态添加路由addRoutes之不能将动态路由存入缓存的解决
2019/02/19 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
跟老齐学Python之类的细节
2014/10/13 Python
浅谈Python中数据解析
2015/05/05 Python
Python实现文件复制删除
2016/04/19 Python
Python数据结构与算法之完全树与最小堆实例
2017/12/13 Python
python批量设置多个Excel文件页眉页脚的脚本
2018/03/14 Python
详解python之协程gevent模块
2018/06/14 Python
Python子类继承父类构造函数详解
2019/02/19 Python
pytorch之ImageFolder使用详解
2020/01/06 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
保护环境倡议书范文
2014/05/13 职场文书
预备党员自我批评思想汇报
2014/10/10 职场文书
音乐教师个人总结
2015/02/06 职场文书
公司致全体员工的感谢信
2019/06/24 职场文书
怎么禁用Win11输入法 最新Win11输入法关闭教程
2022/08/05 数码科技