Python實(shí)現(xiàn)微信翻譯機(jī)器人的方法
相信大家在日常學(xué)習(xí)或者是閱讀英文文章的過(guò)程中,難免會(huì)出現(xiàn)幾個(gè)不認(rèn)識(shí)的單詞,或者想快速翻譯某段英文的意思。
今天,利用Python爬蟲(chóng)等知識(shí),教大家打造一個(gè)微信下的翻譯小助手。好吧,開(kāi)始干活。
先來(lái)看看效果如何
發(fā)送要翻譯的內(nèi)容給我們的翻譯小助手,它會(huì)自動(dòng)回復(fù)翻譯好的內(nèi)容。
環(huán)境配置:
Python版本:3.6.0
系統(tǒng)平臺(tái):Windows 10 X64
IDE:pycharm
相關(guān)模塊:
json模塊
itchat模塊
re模塊
request模塊
parse模塊
以及一些Python自帶的模塊。
根據(jù)內(nèi)容獲取翻譯的結(jié)果
這里使用的是有道翻譯API接口。大致思路說(shuō)一下:
1. 創(chuàng)建連接接口 2. 創(chuàng)建要提交的數(shù)據(jù) 3. 將數(shù)據(jù)轉(zhuǎn)化為服務(wù)器可以處理的信息并提交
4. 返回翻譯結(jié)果
這部分功能我們封裝成一個(gè)函數(shù),參數(shù)是需要發(fā)送的微信用戶名,需要翻譯的內(nèi)容。
數(shù)據(jù)格式我們是以json的格式發(fā)送過(guò)去的,然后獲取的也是json的數(shù)據(jù)格式,該過(guò)程需要做些轉(zhuǎn)換。
還需要把數(shù)據(jù)轉(zhuǎn)換成utf-8的編碼,回來(lái)的數(shù)據(jù)也需要做相應(yīng)的轉(zhuǎn)換和解析,具體看下面代碼:
def translate(userName, content): req_url = 'http://fanyi.youdao.com/translate' # 創(chuàng)建連接接口 # 創(chuàng)建要提交的數(shù)據(jù) Form_Date = {} Form_Date['i'] = content # 輸入要翻譯的內(nèi)容 Form_Date['doctype'] = 'json' data = parse.urlencode(Form_Date).encode('utf-8') # 數(shù)據(jù)轉(zhuǎn)換 response = request.urlopen(req_url, data) # 提交數(shù)據(jù)并解析 html = response.read().decode('utf-8') # 服務(wù)器返回結(jié)果讀取 # 可以看出html是一個(gè)json格式 translate_results = json.loads(html) # 以json格式載入 translate_results = translate_results['translateResult'][0][0]['tgt'] # json格式調(diào)取 print(translate_results) # 輸出結(jié)果 itchat.send(translate_results, toUserName=userName) #發(fā)送翻譯結(jié)果
不了解的同學(xué)在仔細(xì)看看代碼注釋。
微信收發(fā)送消息
關(guān)于微信收發(fā)送消息呢,可以看看之前Python打造天氣預(yù)報(bào)機(jī)器這一篇文章,代碼是直接從那邊稍加修改搬過(guò)來(lái)的。
那邊是獲取天氣,這邊是獲取翻譯結(jié)果,思路都是一樣的。直接看代碼就可以了:
# 如果對(duì)方發(fā)的是文字,則我們給對(duì)方回復(fù)以下的東西 @itchat.msg_register([TEXT]) def text_reply(msg): match = re.search('翻譯',msg['Text']) if match: content = msg['Text'][msg['Text'].find("+")+1:] translate(msg['FromUserName'], content) itchat.auto_login() itchat.run()
我們需要對(duì)消息進(jìn)行匹配分析,以便確定用戶需要的是翻譯功能而不是天氣預(yù)報(bào)等功能,所以需要利用re進(jìn)行匹配一下關(guān)鍵字。
然后調(diào)用translate函數(shù)進(jìn)行獲取發(fā)送。
完整代碼:
# 有道翻譯結(jié)果獲取 ''' 大致思路如下 1. 創(chuàng)建連接接口 2. 創(chuàng)建要提交的數(shù)據(jù) . 將數(shù)據(jù)轉(zhuǎn)化為服務(wù)器可以處理的信息并提交 . 返回翻譯結(jié)果 ''' # 引入python中內(nèi)置的包json. 用來(lái)解析和生成json數(shù)據(jù)的 import json import itchat import re from itchat.content import * from urllib import request, parse def translate(userName, content): req_url = 'http://fanyi.youdao.com/translate' # 創(chuàng)建連接接口 # 創(chuàng)建要提交的數(shù)據(jù) Form_Date = {} Form_Date['i'] = content # 輸入要翻譯的內(nèi)容 Form_Date['doctype'] = 'json' data = parse.urlencode(Form_Date).encode('utf-8') # 數(shù)據(jù)轉(zhuǎn)換 response = request.urlopen(req_url, data) # 提交數(shù)據(jù)并解析 html = response.read().decode('utf-8') # 服務(wù)器返回結(jié)果讀取 # 可以看出html是一個(gè)json格式 translate_results = json.loads(html) # 以json格式載入 translate_results = translate_results['translateResult'][0][0]['tgt'] # json格式調(diào)取 print(translate_results) # 輸出結(jié)果 itchat.send(translate_results, toUserName=userName) #發(fā)送翻譯結(jié)果 # 如果對(duì)方發(fā)的是文字,則我們給對(duì)方回復(fù)以下的東西 @itchat.msg_register([TEXT]) def text_reply(msg): match = re.search('翻譯',msg['Text']) if match: content = msg['Text'][msg['Text'].find("+")+1:] translate(msg['FromUserName'], content) itchat.auto_login() itchat.run()
總結(jié)
以上所述是小編給大家介紹的Python實(shí)現(xiàn)微信翻譯機(jī)器人的方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
- Python實(shí)現(xiàn)企業(yè)微信機(jī)器人每天定時(shí)發(fā)消息實(shí)例
- Python調(diào)用釘釘自定義機(jī)器人的實(shí)現(xiàn)
- Python使用微信接入圖靈機(jī)器人過(guò)程解析
- 基于python的itchat庫(kù)實(shí)現(xiàn)微信聊天機(jī)器人(推薦)
- python實(shí)現(xiàn)機(jī)器人卡牌
- Python實(shí)現(xiàn)微信機(jī)器人的方法
- Python3從零開(kāi)始搭建一個(gè)語(yǔ)音對(duì)話機(jī)器人的實(shí)現(xiàn)
- 基于Python的微信機(jī)器人開(kāi)發(fā) 微信登錄和獲取好友列表實(shí)現(xiàn)解析
- Python qqbot 實(shí)現(xiàn)qq機(jī)器人的示例代碼
- python實(shí)現(xiàn)微信自動(dòng)回復(fù)機(jī)器人功能
- 如何用Python做一個(gè)微信機(jī)器人自動(dòng)拉群
- Python QQBot庫(kù)的QQ聊天機(jī)器人
- 使用python接入微信聊天機(jī)器人
- itchat-python搭建微信機(jī)器人(附示例)
- python實(shí)現(xiàn)微信機(jī)器人: 登錄微信、消息接收、自動(dòng)回復(fù)功能
- 手把手教你使用Python創(chuàng)建微信機(jī)器人
- python控制nao機(jī)器人身體動(dòng)作實(shí)例詳解
- Python開(kāi)發(fā)企業(yè)微信機(jī)器人每天定時(shí)發(fā)消息實(shí)例
相關(guān)文章
Python APScheduler執(zhí)行使用方法詳解
在本篇文章里小編給大家整理的是一篇關(guān)于Python APScheduler執(zhí)行使用方法的相關(guān)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2020-12-12python之cur.fetchall與cur.fetchone提取數(shù)據(jù)并統(tǒng)計(jì)處理操作
這篇文章主要介紹了python之cur.fetchall與cur.fetchone提取數(shù)據(jù)并統(tǒng)計(jì)處理操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04Python實(shí)例方法與類(lèi)方法和靜態(tài)方法介紹與區(qū)別分析
在 Python 中,實(shí)例方法(instance method),類(lèi)方法(class method)與靜態(tài)方法(static method)經(jīng)常容易混淆。本文通過(guò)代碼例子來(lái)說(shuō)明它們的區(qū)別2022-10-10python程序主動(dòng)退出進(jìn)程的五種方式
對(duì)于如何結(jié)束一個(gè)Python程序或者用Python操作去結(jié)束一個(gè)進(jìn)程等,Python本身給出了好幾種方法,而這些方式也存在著一些區(qū)別,對(duì)相關(guān)的幾種方法看了并實(shí)踐了下,同時(shí)也記錄下,需要的朋友可以參考下2024-02-02用Python實(shí)現(xiàn)協(xié)同過(guò)濾的教程
這篇文章主要介紹了用Python實(shí)現(xiàn)協(xié)同過(guò)濾的教程,主要用于從大數(shù)據(jù)中抽取用戶信息偏好等等,需要的朋友可以參考下2015-04-04基于python的selenium兩種文件上傳操作實(shí)現(xiàn)詳解
這篇文章主要介紹了基于python的selenium兩種文件上傳操作實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09python使用struct模塊實(shí)現(xiàn)打包/解包二進(jìn)制數(shù)據(jù)
因?yàn)榫W(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)都是二進(jìn)制字節(jié)流,而?Python?只有字符串可以直接轉(zhuǎn)成字節(jié)流,對(duì)于整數(shù)、浮點(diǎn)數(shù)則無(wú)能為力了,所以?Python?提供了?struct?模塊來(lái)幫我們解決這一點(diǎn),下面我們就來(lái)看看它的用法吧2023-09-09