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程序设计有所帮助。