#!/usr/local/bin/python3.7 """ @File : baidu_translate.py @Time : 2020/03/28 @Author : Mozili """ import requests import random import hashlib import urllib import json class BaiduTranslate(object): def __init__(self,word): # 需要翻译的元素 self.q = word # 翻译源语言 self.fromLang = 'en' # 译文语言 self.toLang = 'zh' # 通用翻译API HTTP地址 self.translate_api_url = 'http://api.fanyi.baidu.com/api/trans/vip/translate' # appid&密钥(自己注册获得) self.appid = 'xxx' self.secretKey = 'xxx' # 随机数 self.salt = random.randint(32768,65536) # 签名(appid+q+salt+密钥的md5值) self.sign = self.appid + self.q + str(self.salt) + self.secretKey # 创建hash对象 m = hashlib.md5() # 更新hash对象 m.update(self.sign.encode('utf-8')) # 将hash中的数据转换成数字,其中只包含十六进制的数字 self.sign = m.hexdigest()
# 拼接完整请求 self.my_url = self.translate_api_url + '?q=' + urllib.request.quote(self.q) + '&from=' + self.fromLang + '&to=' + self.toLang + '&appid=' + self.appid + '&salt=' + str(self.salt) + '&sign=' + self.sign def en_translate_zh(self): re = requests.request('get',self.my_url) print('\n\t re.text',re.text)
# 转换成json格式 re_json = json.loads(re.text) print('\n\t re_json',re_json) if __name__ == "__main__": bt = BaiduTranslate('test') bt.en_translate_zh()
说明:
1、百度翻译appid+密钥需要自己注册获得,链接:https://mc.viyf.org/get_baidu_appid/
2、百度翻译技术文档中中可查看sign生成方式、接参数说明等,链接:https://api.fanyi.baidu.com/doc/21
3、上面代码运行结果:
4、运行过程中如果出现报错,会有错误吗,具体错误原因请查看百度翻译支持文档:https://api.fanyi.baidu.com/doc/21