用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 09 Python
Python中的浮点数原理与运算分析
Oct 12 Python
Python3调用微信企业号API发送文本消息代码示例
Nov 10 Python
python抓取网页中链接的静态图片
Jan 29 Python
Python中%是什么意思?python中百分号如何使用?
Mar 20 Python
pip命令无法使用的解决方法
Jun 12 Python
Python设计模式之外观模式实例详解
Jan 17 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
Sep 06 Python
Python Django中间件,中间件函数,全局异常处理操作示例
Nov 08 Python
Python 脚本拉取 Docker 镜像问题
Nov 10 Python
python 利用已有Ner模型进行数据清洗合并代码
Dec 24 Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
Feb 22 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/08/17 PHP
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
php中将数组存到文件里的实现代码
2012/01/19 PHP
PHP中使用localhost连接Mysql不成功的解决方法
2014/08/20 PHP
php实现检查文章是否被百度收录
2015/01/27 PHP
分享php多功能图片处理类
2016/05/15 PHP
Mootools 1.2教程 类(一)
2009/09/15 Javascript
javascript 判断数组是否已包含了某个元素的函数
2010/05/30 Javascript
ExtJs使用总结(非常详细)
2012/03/22 Javascript
js 手机号码合法性验证代码集合
2012/09/29 Javascript
JavaScript遍历table表格中的某行某列并打印其值
2014/07/08 Javascript
微信支付如何实现内置浏览器的H5页面支付
2015/09/25 Javascript
基于JavaScript怎么实现让歌词滚动播放
2015/11/03 Javascript
Easyui form combobox省市区三级联动
2016/01/13 Javascript
基于javascript实现tab选项卡切换特效调试笔记
2016/03/30 Javascript
jQuery Chart图表制作组件Highcharts用法详解
2016/06/01 Javascript
JavaScript中 this 指向问题深度解析
2017/02/21 Javascript
JAVA中截取字符串substring用法详解
2017/04/14 Javascript
小程序点击图片实现自动播放视频
2020/05/29 Javascript
原生JS实现的跳一跳小游戏完整实例
2019/01/27 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
原生js拖拽实现图形伸缩效果
2020/02/10 Javascript
JS sort方法基于数组对象属性值排序
2020/07/10 Javascript
[51:14]LGD vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
Python 实现简单的shell sed替换功能(实例讲解)
2017/09/29 Python
在ubuntu16.04中将python3设置为默认的命令写法
2018/10/31 Python
Python编程flask使用页面模版的方法
2018/12/28 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
2019/07/11 Python
使用python实现离散时间傅里叶变换的方法
2019/09/02 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
2020/12/08 Python
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
2018/10/08 HTML / CSS
美国玩具公司:U.S.Toy
2018/05/19 全球购物
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
C#如何进行LDAP用户校验
2012/11/21 面试题
2014年幼儿园学期工作总结
2014/12/05 职场文书
Android移动应用开发指南之六种布局详解
2022/09/23 Java/Android