Python如何通過百度翻譯API實現(xiàn)翻譯功能
本人英語不好,很多詞組不認識,只能借助工具;百度翻譯和谷歌翻譯都不錯,近期自學Python,就想能否自己設計一個百度翻譯軟件呢?
百度翻譯開放平臺:http://api.fanyi.baidu.com/api/trans/product/index

百度翻譯開放平臺是百度翻譯面向廣大開發(fā)者提供開放服務的平臺。
服務涵蓋:通用翻譯API、定制化翻譯API、語音翻譯SDK、拍照翻譯SDK等,并持續(xù)更新中。自己用通用的即可。
通用翻譯API采用全流程自助申請的模式。點擊網(wǎng)站上方的“登錄”按鈕,以百度賬號登錄平臺;在產品服務頁面點擊“立即使用”,按照頁面提示信息注冊成為開發(fā)者,即可獲得APPID和密鑰信息。同一百度賬號或手機號碼僅能申請一組APPID和密鑰信息,該APPID和密鑰信息可用于多項服務調用
已注冊開發(fā)者的用戶,可在產品服務頁面點擊“立即使用”或者在管理控制臺開通通用翻譯API服務;如需開通更多服務,可在管理控制臺-總覽頁面開通其他服務。

通用翻譯API技術文檔 http://api.fanyi.baidu.com/api/trans/product/apidoc
通用翻譯API通過HTTP接口對外提供多語種互譯服務。您只需要通過調用通用翻譯API,傳入待翻譯的內容,并指定要翻譯的源語言(支持源語言語種自動檢測)和目標語言種類,就可以得到相應的翻譯結果。
通用翻譯API HTTP地址:http://api.fanyi.baidu.com/api/trans/vip/translate
通用翻譯API HTTPS地址:https://fanyi-api.baidu.com/api/trans/vip/translate


完整代碼:
import json
import random
import hashlib
from urllib import parse
import http.client
class BaiduTranslate:
def __init__(self,fromLang,toLang):
self.url = "/api/trans/vip/translate"
self.appid="xxxxx" #申請的賬號
self.secretKey = 'xxxxx'#賬號密碼
self.fromLang = fromLang
self.toLang = toLang
self.salt = random.randint(32768, 65536)
def BdTrans(self,text):
sign = self.appid + text + str(self.salt) + self.secretKey
md = hashlib.md5()
md.update(sign.encode(encoding='utf-8'))
sign = md.hexdigest()
myurl = self.url + \
'?appid=' + self.appid + \
'&q=' + parse.quote(text) + \
'&from=' + self.fromLang + \
'&to=' + self.toLang + \
'&salt=' + str(self.salt) + \
'&sign=' + sign
try:
httpClient = http.client.HTTPConnection('api.fanyi.baidu.com')
httpClient.request('GET', myurl)
response = httpClient.getresponse()
html = response.read().decode('utf-8')
html = json.loads(html)
dst = html["trans_result"][0]["dst"]
return True , dst
except Exception as e:
return False , e
if __name__=='__main__':
BaiduTranslate_test = BaiduTranslate('en','zh')
Results = BaiduTranslate_test.BdTrans("Hello, World!")#要翻譯的詞組
print(Results)

官方demo,應該是在Python2中運行的,Python3中可能無法運行,原因應該是沒有安裝對應的庫和語法的問題,
查找各種資料發(fā)現(xiàn)原來Python 2.x中的"httplib"模塊在Python 3.x中變成了"http.client",
print語句輸出在3.x中要加(), MD5 要換成hashlib,
import hashlib
str1 = "中國是一個偉大的國家,中華民族是一個偉大的民族"
md5 = hashlib.md5()
md5.update(str1.encode("utf-8")) # 注意這里必須要編碼,否則報錯
print(md5.hexdigest())
修改運行后,結果還是亂碼:

增加轉碼后,顯示正常,完整代碼如下:
#/usr/bin/env python
#coding=utf8
import json
import http.client #修改引用的模塊
import hashlib #修改引用的模塊
from urllib import parse
import random
appid = 'xxxx' #你的appid
secretKey = 'xxxx' #你的密鑰
httpClient = None
myurl = '/api/trans/vip/translate'
q = 'good'
fromLang = 'en'
toLang = 'zh'
salt = random.randint(32768, 65536)
sign = appid+q+str(salt)+secretKey
m1 = hashlib.md5()
m1.update(sign.encode("utf-8"))
sign = m1.hexdigest()
myurl = myurl+'?appid='+appid+'&q='+parse.quote(q)+'&from='+fromLang+'&to='+toLang+'&salt='+str(salt)+'&sign='+sign
try:
httpClient = http.client.HTTPConnection('api.fanyi.baidu.com')
httpClient.request('GET', myurl)
response = httpClient.getresponse()
#轉碼
html = response.read().decode('utf-8')
html = json.loads(html)
dst = html["trans_result"][0]["dst"]
print(dst)
except Exception as e:
print(e)
finally:
if httpClient:
httpClient.close()
以下是官方demo,大家可以對比下區(qū)別:
#/usr/bin/env python
#coding=utf8
import httplib
import md5
import urllib
import random
appid = '' #你的appid
secretKey = '' #你的密鑰
httpClient = None
myurl = '/api/trans/vip/translate'
q = 'apple'
fromLang = 'en'
toLang = 'zh'
salt = random.randint(32768, 65536)
sign = appid+q+str(salt)+secretKey
m1 = md5.new()
m1.update(sign)
sign = m1.hexdigest()
myurl = myurl+'?appid='+appid+'&q='+urllib.quote(q)+'&from='+fromLang+'&to='+toLang+'&salt='+str(salt)+'&sign='+sign
try:
httpClient = httplib.HTTPConnection('api.fanyi.baidu.com')
httpClient.request('GET', myurl)
#response是HTTPResponse對象
response = httpClient.getresponse()
print response.read()
except Exception, e:
print e
finally:
if httpClient:
httpClient.close()
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
python Hypothesis生成和執(zhí)行大量的測試用例
Hypothesis是一個基于屬性的測試(property-based testing)庫,它能夠幫助我們生成和執(zhí)行大量的測試用例,與傳統(tǒng)的單元測試相比,屬性測試更加靈活和全面,能夠發(fā)現(xiàn)更多的邊界情況和潛在的錯誤2024-01-01
淺談sklearn中predict與predict_proba區(qū)別
這篇文章主要介紹了淺談sklearn中predict與predict_proba區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
使用Python的Django框架實現(xiàn)事務交易管理的教程
這篇文章主要介紹了使用Python的Django框架實現(xiàn)事務交易管理的教程,針對數(shù)據(jù)庫的事務行為進行一系列操作,要的朋友可以參考下2015-04-04
Python OpenCV實現(xiàn)按照像素點圖片切割
本文將詳細介紹如何使用Python和OpenCV進行基于像素點的圖像分割,包括閾值分割,自適應閾值分割等,感興趣的小伙伴可以跟隨小編一起學習一下2024-12-12

