python调用百度通用翻译API

1.百度翻译开放平台申请成为开发者

使用Baidu翻译API,首先需要去百度翻译开放平台申请成为开发者,在成为开发者之后,可获得APPID以及秘钥用于之后的API的调用。
百度翻译开放平台链接
申请成为开发者之后,申请使用百度翻译通用API可在【管理控制台】–【开发者信息】中查看自己的APPID以及秘钥。
在这里插入图片描述

2.查看平台提供的技术文档

  • 接入方式
    通用翻译API通过 HTTP 接口对外提供多语种互译服务。只需要通过调用通用翻译API,传入待翻译的内容,并指定要翻译的源语言(支持源语言语种自动检测)和目标语言种类,就可以得到相应的翻译结果。
    通用翻译API HTTP 地址:
    http://api.fanyi.baidu.com/api/trans/vip/translate
  • 签名生成方法
    签名是为了保证调用安全,使用 MD5 算法生成的一段字符串,生成的签名长度为 32 位,签名中的英文字符均为小写格式。
    生成方法:
    Step1: 将请求参数中的 APPID(appid), 翻译 query(q, 注意为UTF-8编码), 随机数(salt), 以及平台分配的密钥按照 appid+q+salt+密钥的顺序拼接得到字符串str。
    Step2: 对字符串 str 做 md5 ,得到 32 位小写的 sign。
  • 输入参数
    请求方式: 可使用 GET 或 POST 方式,如使用 POST 方式,Content-Type 请指定为:application/x-www-form-urlencoded
    字符编码:统一采用 UTF-8 编码格式.
    query 长度:为保证翻译质量,请将单次请求长度控制在 6000 bytes以内(汉字约为输入参数 2000 个)
    在这里插入图片描述
  • 输出参数
    返回的结果是json格式,包含以下字段:
    在这里插入图片描述

更加详细的文档内容可以参考通用翻译API接入文档

3.python调用百度翻译通用API进行翻译

中英互译的实现,可以根据需求对参数进行修改

def baiduTranslate(translate_text, flag=1):
    '''
    :param translate_text: 待翻译的句子,len(q)<2000
    :param flag: 1:原句子翻译成英文;0:原句子翻译成中文
    :return: 返回翻译结果。
    For example:
    q=我今天好开心啊!
    result = {'from': 'zh', 'to': 'en', 'trans_result': [{'src': '我今天好开心啊!', 'dst': "I'm so happy today!"}]}
    '''

    appid = 'xxxxx'  # 填写你的appid
    secretKey = 'xxxxxx'  # 填写你的密钥
    httpClient = None
    myurl = '/api/trans/vip/translate'  # 通用翻译API HTTP地址
    fromLang = 'auto'  # 原文语种

    if flag:
        toLang = 'en'  # 译文语种
    else:
        toLang = 'zh'  # 译文语种

    salt = random.randint(3276, 65536)

    sign = appid + translate_text + str(salt) + secretKey
    sign = hashlib.md5(sign.encode()).hexdigest()
    myurl = myurl + '?appid=' + appid + '&q=' + urllib.parse.quote(translate_text) + '&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()
        result_all = response.read().decode("utf-8")
        result = json.loads(result_all)

        # return result
        return result['trans_result'][0]['dst']

    except Exception as e:
        print(e)
    finally:
        if httpClient:
            httpClient.close()
if __name__ == '__main__':
    # 手动录入翻译内容,q存放
    # q = raw_input("please input the word you want to translate:")
    q = "介绍一下整本书,比如是传主的人生,或者作者写这本书的特色。可参看目录、序言或简介等资料。"
    '''
    flag=1 输入的句子翻译成英文
    flag=0 输入的句子翻译成中文
    '''
    result = baiduTranslate(q, flag=1)  # 百度翻译
    print("原句:"+q)
    print(result)

输出结果:
在这里插入图片描述

记录备用

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐