温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python通过百度翻译API实现翻译功能的示例

发布时间:2021-02-01 10:19:42 来源:亿速云 阅读:383 作者:小新 栏目:开发技术

这篇文章将为大家详细讲解有关Python通过百度翻译API实现翻译功能的示例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

本人英语不好,很多词组不认识,只能借助工具;百度翻译和谷歌翻译都不错,近期自学Python,就想能否自己设计一个百度翻译软件呢?

百度翻译开放平台:http://api.fanyi.baidu.com/api/trans/product/index

Python通过百度翻译API实现翻译功能的示例

百度翻译开放平台是百度翻译面向广大开发者提供开放服务的平台。

服务涵盖:通用翻译API、定制化翻译API、语音翻译SDK、拍照翻译SDK等,并持续更新中。自己用通用的即可。

通用翻译API采用全流程自助申请的模式。点击网站上方的“登录”按钮,以百度账号登录平台;在产品服务页面点击“立即使用”,按照页面提示信息注册成为开发者,即可获得APPID和密钥信息。同一百度账号或手机号码仅能申请一组APPID和密钥信息,该APPID和密钥信息可用于多项服务调用

已注册开发者的用户,可在产品服务页面点击“立即使用”或者在管理控制台开通通用翻译API服务;如需开通更多服务,可在管理控制台-总览页面开通其他服务。

Python通过百度翻译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

Python通过百度翻译API实现翻译功能的示例

Python通过百度翻译API实现翻译功能的示例

完整代码:

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)

Python通过百度翻译API实现翻译功能的示例

官方demo,应该是在Python2中运行的,Python3中可能无法运行,原因应该是没有安装对应的库和语法的问题,

查找各种资料发现原来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())

修改运行后,结果还是乱码:

Python通过百度翻译API实现翻译功能的示例

增加转码后,显示正常,完整代码如下:

#/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,大家可以对比下区别:

#/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通过百度翻译API实现翻译功能的示例”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI