用python wxpy管理微信公众号,并利用微信获取本身的开源数据。

以前了解到itchat 乃至于 wxpy时 是利用tuling聊天机器人的接口。调用接口并保存双方的问答结果能够做为本身的问答词库的一个数据库累计。这些数据能够用于本身训练。html

而最近但愿获取一些语音资源,用于卷积神经网络的训练。。数据库

 


 

首先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

根据上面能够作一些头像集合,或者微信好友的动态图表统计。app

 

2.  消息回复spa

bot.friends().search('老九门里排第十')[0].send('[强]') #表示回复给 '老九门里排第十' 点赞符号 至关于 friends.search() 

 


 

 

然而这些不能知足一些高级的需求好比:excel

1. 能够自动将录音,视频,图像,聊天记录等按照档案记录下来。(此处修改可操做链接图灵机器人,将提问和回答的信息记录下来。做为本身训练的原始数据集)
code

其中 全局参数 global temp:orm

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里

文字能够用于训练,亦可用于词云等生成。

 例:message的文档提取后

 

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)

暂时更新到这里,以上。

相关文章
相关标签/搜索