python3调用百度翻译API实现实时翻译
今天需要做一个翻译的工具,找到之前写过的有道翻译,已经不能用了,最后看到百度翻译还不错,不过官方版本是Python2,我需要Python3,就自己写了一个:
#coding:utf8 ''' @Author:LCY @Contact:lchuanyong@126.com @blog:http://http://blog.csdn.net/lcyong_ @Date:2018-01-15 @Time:19:19 说明:appid和secretKey为百度翻译文档中自带的,需要切换为自己的 python2和python3部分库名称更改对应如下: httplib---->http.client md5---->hashlib.md5 urllib.quote---->urllib.parse.quote 官方链接: http://api.fanyi.baidu.com/api/trans/product/index ''' importhttp.client importhashlib importjson importurllib importrandom defbaidu_translate(content): appid='20151113000005349' secretKey='osubCEzlGjzvw8qdQc41' httpClient=None myurl='/api/trans/vip/translate' q=content fromLang='zh'#源语言 toLang='jp'#翻译后的语言 salt=random.randint(32768,65536) sign=appid+q+str(salt)+secretKey sign=hashlib.md5(sign.encode()).hexdigest() myurl=myurl+'?appid='+appid+'&q='+urllib.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是HTTPResponse对象 response=httpClient.getresponse() jsonResponse=response.read().decode("utf-8")#获得返回的结果,结果为json格式 js=json.loads(jsonResponse)#将json格式的结果转换字典结构 dst=str(js["trans_result"][0]["dst"])#取得翻译后的文本结果 print(dst)#打印结果 exceptExceptionase: print(e) finally: ifhttpClient: httpClient.close() if__name__=='__main__': whileTrue: print("请输入要翻译的内容,如果退出输入q") content=input() if(content=='q'): break baidu_translate(content)
官方版本:
#/usr/bin/envpython #coding=utf8 importhttplib importmd5 importurllib importrandom appid='20151113000005349' secretKey='osubCEzlGjzvw8qdQc41' 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() printresponse.read() exceptException,e: printe finally: ifhttpClient: httpClient.close()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。