用python wxpy管理微信公眾號(hào)并利用微信獲取自己的開(kāi)源數(shù)據(jù)
之前了解到itchat 乃至于 wxpy時(shí) 是利用tuling聊天機(jī)器人的接口。調(diào)用接口并保存雙方的問(wèn)答結(jié)果可以作為自己的問(wèn)答詞庫(kù)的一個(gè)數(shù)據(jù)庫(kù)累計(jì)。這些數(shù)據(jù)可以用于自己訓(xùn)練。
而最近希望獲取一些語(yǔ)音資源,用于卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。。
--------------------------------------------------------------------------------
首先wxpy是itchat的升級(jí)版,通過(guò)wxpy bot.core即可原封不動(dòng)的調(diào)用itchat的指令。
可以實(shí)現(xiàn)的簡(jiǎn)單功能:
1. 調(diào)取所有微信好友的信息,包括頭像,簽名,地區(qū),等信息。
# -*- 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
#初始化機(jī)器人,選擇緩存模式(掃碼)登錄
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)來(lái)爬取好友列表的頭像
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')#所有朋友相關(guān)資料存為excel
根據(jù)上面可以做一些頭像集合,或者微信好友的動(dòng)態(tài)圖表統(tǒng)計(jì)。
2. 消息回復(fù)
bot.friends().search('老九門(mén)里排第十')[0].send('[強(qiáng)]') #表示回復(fù)給 '老九門(mén)里排第十' 點(diǎn)贊符號(hào) 相當(dāng)于 friends.search()
-------------------------------------------------------------------------------
然而這些不能滿足一些高級(jí)的需求比如:
1.可以自動(dòng)將錄音,視頻,圖像,聊天記錄等按照檔案記錄下來(lái)。(此處修改可操作連接圖靈機(jī)器人,將提問(wèn)和回答的信息記錄下來(lái)。作為自己訓(xùn)練的原始數(shù)據(jù)集)
其中 全局參數(shù) global temp:
temp是一個(gè)list,可以將最近的消息加入list,該消息信息是字典格式的所有消息包含的原始數(shù)據(jù)。 比如消息類(lèi)型,發(fā)送人,接收人等等。
# -*- 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() # 所有開(kāi)啟了聊天窗口的對(duì)象
groups=bot.groups() # 所有群的對(duì)象
friends=bot.friends() # 所有好友的對(duì)象
mps=bot.mps() # 所有公眾號(hào)的對(duì)象
@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\\'; # 修改為希望存儲(chǔ)聊天,推送,圖片,視頻,音頻等信息的地址
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('非文字消息,已存儲(chǔ)')
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')
如上圖: 所有新回復(fù)的消息會(huì)自動(dòng)創(chuàng)建 代碼里path下的文件夾,視頻,錄音等非文字內(nèi)容會(huì)直接下載,推送等html格式的消息會(huì)當(dāng)做文字和聊天記錄一同保存下來(lái)記錄到message.txt里
文字可以用于訓(xùn)練,亦可用于詞云等生成。
2.可以管理微信公眾號(hào),比如根據(jù)對(duì)方的輸入自動(dòng)從調(diào)取數(shù)據(jù)回復(fù),或者固定轉(zhuǎn)發(fā)某些來(lái)源的推送。
# 定位公司群
company_group = ensure_one(bot.groups().search('公司微信群'))
# 定位老板
boss = ensure_one(company_group.search('BOSS'))
# 將老板的消息轉(zhuǎn)發(fā)到文件傳輸助手
@bot.register(company_group)
def forward_boss_message(msg):
if msg.member == boss:
msg.forward(bot.file_helper, prefix='BOSS')
3. 針對(duì)某人的自動(dòng)回復(fù),此處可設(shè)定詞匯和回復(fù)內(nèi)容(比如html格式的推送或者鏈接)來(lái)實(shí)現(xiàn)微信公眾號(hào)的一些運(yùn)營(yíng)。
具體用法如下:
@ bot.register() 的括號(hào)內(nèi)必須為一個(gè)對(duì)象,比如上文是一個(gè)公司的群,是從所有群中搜索名字 '公司微信群' ,我們之前定義的
groups=bot.groups() # 所有群的對(duì)象 friends=bot.friends() # 所有好友的對(duì)象 mps=bot.mps() # 所有公眾號(hào)的對(duì)象
均是對(duì)象的集合,從中篩選即可,比如想要自動(dòng)回復(fù) 老九門(mén)里排第十 這個(gè)人的所有text類(lèi)型的消息。即
laojiu= friends.search('老九門(mén)里排第十')[0] # 這里其實(shí)默認(rèn)搜索的是nickname
然后:
@bot.register([laojiu, groups], TEXT) # 此處表示對(duì)laojiu 和所有g(shù)roups里的對(duì)象的text類(lèi)型的消息做操作
def auto_reply(msg):
# 如果是群聊,但沒(méi)有被 @,則不回復(fù)
if isinstance(msg.chat, Group) and not msg.is_at:
return
else:
# 回復(fù)消息內(nèi)容和類(lèi)型
return '收到消息: {} ({})'.format(msg.text, msg.type)
暫時(shí)更新到這里,以上。
總結(jié)
以上所述是小編給大家介紹的用python wxpy管理微信公眾號(hào)并利用微信獲取自己的開(kāi)源數(shù)據(jù),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
Python設(shè)計(jì)模式之命令模式簡(jiǎn)單示例
這篇文章主要介紹了Python設(shè)計(jì)模式之命令模式,簡(jiǎn)單介紹了命令模式的概念、原理,并結(jié)合實(shí)例形式分析了Python命令模式的定義與使用相關(guān)操作技巧,需要的朋友可以參考下2018-01-01
Python基礎(chǔ)進(jìn)階之海量表情包多線程爬蟲(chóng)功能的實(shí)現(xiàn)
這篇文章主要介紹了Python基礎(chǔ)進(jìn)階之海量表情包多線程爬蟲(chóng),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
Python Pandas 獲取列匹配特定值的行的索引問(wèn)題
這篇文章主要介紹了Python Pandas 獲取列匹配特定值的行的索引問(wèn)題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07
django中使用Celery 布式任務(wù)隊(duì)列過(guò)程詳解
這篇文章主要介紹了django中使用Celery 布式任務(wù)隊(duì)列實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
python隨機(jī)數(shù)分布random均勻分布實(shí)例
今天小編就為大家分享一篇python隨機(jī)數(shù)分布random均勻分布實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
python實(shí)現(xiàn)根據(jù)文件關(guān)鍵字進(jìn)行切分為多個(gè)文件的示例
今天小編就為大家分享一篇python實(shí)現(xiàn)根據(jù)文件關(guān)鍵字進(jìn)行切分為多個(gè)文件的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12

