Python通过调用有道翻译api实现翻译功能示例
本文实例讲述了Python通过调用有道翻译api实现翻译功能。分享给大家供大家参考,具体如下:
通过调用有道翻译的api,实现中译英、其他语言译中文
Python代码:
#coding=utf-8
importurllib
importurllib2
importjson
importtime
importhashlib
classYouDaoFanyi:
def__init__(self,appKey,appSecret):
self.url='https://openapi.youdao.com/api/'
self.headers={
"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/59.0.3071.109Safari/537.36",
}
self.appKey=appKey#应用id
self.appSecret=appSecret#应用密钥
self.langFrom='auto'#翻译前文字语言,auto为自动检查
self.langTo='auto'#翻译后文字语言,auto为自动检查
defgetUrlEncodedData(self,queryText):
'''
将数据url编码
:paramqueryText:待翻译的文字
:return:返回url编码过的数据
'''
salt=str(int(round(time.time()*1000)))#产生随机数,其实固定值也可以,不如"2"
sign_str=self.appKey+queryText+salt+self.appSecret
sign=hashlib.md5(sign_str).hexdigest()
payload={
'q':queryText,
'from':self.langFrom,
'to':self.langTo,
'appKey':self.appKey,
'salt':salt,
'sign':sign
}
#注意是get请求,不是请求
data=urllib.urlencode(payload)
returndata
defparseHtml(self,html):
'''
解析页面,输出翻译结果
:paramhtml:翻译返回的页面内容
:return:None
'''
data=json.loads(html)
print'-'*10
translationResult=data['translation']
ifisinstance(translationResult,list):
translationResult=translationResult[0]
printtranslationResult
if"basic"indata:
youdaoResult="\n".join(data['basic']['explains'])
print'有道词典结果'
printyoudaoResult
print'-'*10
deftranslate(self,queryText):
data=self.getUrlEncodedData(queryText)#获取url编码过的数据
target_url=self.url+'?'+data#构造目标url
request=urllib2.Request(target_url,headers=self.headers)#构造请求
response=urllib2.urlopen(request)#发送请求
self.parseHtml(response.read())#解析,显示翻译结果
if__name__=="__main__":
appKey='应用id'#应用id
appSecret='应用密钥'#应用密钥
fanyi=YouDaoFanyi(appKey,appSecret)
whileTrue:
queryText=raw_input("请输入你好翻译的文字[Q|quit退出]:").strip()
ifqueryTextin['Q','quit']:
break
fanyi.translate(queryText)
关于有道翻译api的详细说明可参考其官网:http://ai.youdao.com/docs/api.html
更多关于Python相关内容感兴趣的读者可查看本站专题:《PythonSocket编程技巧总结》、《PythonURL操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。