用python wxpy管理微信公众号,并利用微信获取自己的开源数据。
用python wxpy管理微信公众号,并利用微信获取自己的开源数据。
之前了解到itchat 乃至于 wxpy时 是利用tuling聊天机器人的接口。调用接口并保存双方的问答结果可以作为自己的问答词库的一个数据库累计。这些数据可以用于自己训练。
而最近希望获取一些语音资源,用于卷积神经网络的训练。。
首先wxpy是itchat的升级版,通过wxpy bot.core即可原封不动的调用itchat的指令。
可以实现的简单功能:
- 调取所有微信好友的信息,包括头像,签名,地区,等信息。
复制代码
-- 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
复制代码
根据上面可以做一些头像集合,或者微信好友的动态图表统计。
- 消息回复
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')
复制代码
如上图: 所有新回复的消息会自动创建 代码里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)
复制代码
暂时更新到这里,以上。
原文地址https://www.cnblogs.com/techs-wenzhe/p/11264012.html
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
程序员技术练级攻略
月光博客6月12日发表了《写给新手程序员的一封信》,翻译自《An open letter to those who want to start programming》,我的朋友(他在本站的id是Mailper)告诉我,他希望在酷壳上看到一篇更具操作性的文章。因为他也是喜欢编程和技术的家伙,于是,我让他把他的一些学习Python和Web编程的一些点滴总结一下。于是他给我发来了一些他的心得和经历,我在把他的心得做了不多的增改,并根据我的经历增加了“进阶”一节。这是一篇由新手和我这个老家伙根据我们的经历完成的文章。 我的这个朋友把这篇文章取名叫Build Your Programming Technical Skills,我实在不知道用中文怎么翻译,但我在写的过程中,我觉得这很像一个打网游做任务升级的一个过程,所以取名叫“技术练级攻略”,题目有点大,呵呵,这个标题纯粹是为了好玩。这里仅仅是在分享Mailper和我个人的学习经历。(注:省去了我作为一个初学者曾经学习过的一些技术(今天明显过时了),如:Delphi/Power builder,也省去了我学过的一些我觉得没意思的技术Lotus ...
- 下一篇
8个有意思的JavaScript面试题
摘要: 神奇的JS系列。 作者:前端小智 原文:8个问题看你是否真的懂 JS Fundebug经授权转载,版权归原作者所有。 JavaScript 是一种有趣的语言,我们都喜欢它,因为它的性质。浏览器是JavaScript的主要运行的地方,两者在我们的服务中协同工作。JS有一些概念,人们往往会对它掉以轻心,有时可能会忽略不计。原型、闭包和事件循环等概念仍然是大多数JS开发人员绕道而行的晦涩领域之一。正如我们所知,无知是一件危险的事情,它可能会导致错误。 接下来,来看看几个问题,你也可以试试想想,然后作答。 问题1:浏览器控制台上会打印什么? var a = 10; function foo() { console.log(a); // ?? var a = 20; } foo(); 问题2:如果我们使用 let 或 const 代替 var,输出是否相同? var a = 10; function foo() { console.log(a); // ?? let a = 20; } foo(); 问题3:“newArray”中有哪些元素? var array = []; for (v...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Mario游戏-低调大师作品
- CentOS关闭SELinux安全模块
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,CentOS7官方镜像安装Oracle11G