Python 调用百度翻译接口实现翻译

小编分别写过有道,百度的翻译Demo,个人感觉有这么几个区别:

  • 代码量:百度更简洁,有道太冗余;
  • 是否收费:有道翻译免费,百度翻译超过一定量是要收费的,所以要验证key;
  • 规范性:相比有道翻译,百度翻译API渠道更正规,个人觉得。

申请百度密匙:

既然百度翻译需要验证密匙,我们就有必要先申请账号,获取密匙:

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

流程如下:

  1. 按照提示注册账号,获取 APP ID 和 密钥 ;
  2. 申请开通通用翻译API服务 ;
  3. 参考百度翻译提供的通用翻译API技术文档 接入方式,或者参照我下面的Demo 。

Demo:

我的环境是py3,Demo需要补全自己的appid和secretKey,然后直接复制即可运行,一行代码都不缺。

#百度通用翻译API,不包含词典、tts语音合成等资源,如有相关需求请联系translate_api@baidu.com
# coding=utf-8

import http.client
import hashlib
import urllib
import random
import json
from pip._vendor.distlib.compat import raw_input

# 百度appid和密钥需要通过注册百度【翻译开放平台】账号后获得
appid = 'xxxxxx'        # 填写你的appid
secretKey = 'xxxxxx'    # 填写你的密钥

httpClient = None
myurl = '/api/trans/vip/translate'  # 通用翻译API HTTP地址

fromLang = 'auto'       # 原文语种
toLang = 'zh'           # 译文语种
salt = random.randint(32768, 65536)
# 手动录入翻译内容,q存放
q = raw_input("please input the word you want to translate:")
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()
    result_all = response.read().decode("utf-8")
    result = json.loads(result_all)

    print (result)

except Exception as e:
    pr
可以使用百度翻译API提供的HTTP接口实现Python调用百度翻译翻译接口。具体步骤如下: 1. 首先,需要在百度翻译API官网申请API Key和Secret Key,获取访问API的权限。 2. 在Python中使用requests库向API发送HTTP请求,并传入必要的参数和密钥信息。具体参数包括: - q:待翻译的文本 - from:源语言,可选,默认为auto - to:目标语言,必填 - appidAPI Key - salt:随机数 - sign:签名,由app id + 待翻译文本 + salt + secret key进行MD5加密后得到 3. 解析API返回的JSON格式结果,获取翻译结果。 下面是一个简单的示例代码: ```python import requests import hashlib import random import json def translate(text, from_lang='auto', to_lang='en'): appid = 'your app id' secret_key = 'your secret key' salt = str(random.randint(32768, 65536)) sign = hashlib.md5((appid + text + salt + secret_key).encode('utf-8')).hexdigest() url = 'http://api.fanyi.baidu.com/api/trans/vip/translate' params = { 'q': text, 'from': from_lang, 'to': to_lang, 'appid': appid, 'salt': salt, 'sign': sign } response = requests.get(url, params=params) result = json.loads(response.text) return result['trans_result'][0]['dst'] ``` 在上面的代码中,我们定义了一个translate函数,它接受三个参数:待翻译的文本、源语言和目标语言。我们先计算出sign值,再将参数传入requests库的get方法中,向API发送HTTP请求。最后,我们解析API返回的JSON结果,并返回翻译结果。 注意:百度翻译API的免费使用有次数限制,如果需要更多的翻译次数,需要付费购买。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java Punk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值