用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之折腾一下目录
Oct 24 Python
17个Python小技巧分享
Jan 23 Python
分析Python的Django框架的运行方式及处理流程
Apr 08 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
Aug 23 Python
python ansible服务及剧本编写
Dec 29 Python
用python实现对比两张图片的不同
Feb 05 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
Apr 08 Python
Python3实现的字典遍历操作详解
Apr 18 Python
python 多维切片之冒号和三个点的用法介绍
Apr 19 Python
Python集成开发工具Pycharm的安装和使用详解
Mar 18 Python
keras中的History对象用法
Jun 19 Python
如何用python绘制雷达图
Apr 24 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实现最简单的MVC框架实例教程
2014/09/08 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
2015/02/12 PHP
ThinkPHP的SAE开发相关注意事项详解
2016/10/09 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
2010/01/15 Javascript
拥抱模块化的JavaScript
2012/03/07 Javascript
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
jquery计算鼠标和指定元素之间距离的方法
2015/06/26 Javascript
js实现表单Radio切换效果的方法
2015/08/17 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
2016/05/27 Javascript
如何检测JavaScript的各种类型
2016/07/30 Javascript
原生js实现类似fullpage的单页/全屏滚动
2017/01/22 Javascript
bootstrap table 数据表格行内修改的实现代码
2017/02/13 Javascript
Vue 2.X的状态管理vuex记录详解
2017/03/23 Javascript
CSS3 动画卡顿性能优化的完美解决方案
2018/09/20 Javascript
详解如何在Vue项目中导出Excel
2019/04/19 Javascript
详解小程序input框失焦事件在提交事件前的处理
2019/05/05 Javascript
Vue项目实现简单的权限控制管理功能
2019/07/17 Javascript
JavaScript实现轮播图特效
2020/04/10 Javascript
[05:09]第二届DOTA2亚洲邀请赛决赛日比赛集锦:iG 3:0 OG夺冠
2017/04/05 DOTA
[03:13]DOTA2-DPC中国联赛1月25日Recap集锦
2021/03/11 DOTA
Python发送Email方法实例
2014/08/21 Python
深入理解Python分布式爬虫原理
2017/11/23 Python
DJANGO-URL反向解析REVERSE实例讲解
2019/10/25 Python
python科学计算之scipy——optimize用法
2019/11/25 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
探索欧洲最好的品牌:Bombinate
2019/06/14 全球购物
网络方面基础面试题
2012/11/16 面试题
财务主管的岗位职责
2013/12/30 职场文书
趵突泉导游词
2015/02/03 职场文书
毕业生党员个人总结
2015/02/14 职场文书
学生不参加考试检讨书
2015/02/19 职场文书
个人优缺点总结
2015/02/28 职场文书
中英文求职信范文
2015/03/19 职场文书
2015年酒店年度工作总结
2015/05/23 职场文书
HTML+JS实现在线朗读器
2022/02/15 Javascript