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:
    print (e)
finally:
    if httpClient:
        httpClient.close()

语言列表

源语言语种不确定时可设置为 auto,目标语言语种不可设置为auto。因为对于非常用语种,语种自动检测可能存在误差。

语言简写名称
auto自动检测
zh中文
en英语
yue粤语
wyw文言文
jp日语
kor韩语
fra法语
spa西班牙语
th泰语
ara阿拉伯语
ru俄语
pt葡萄牙语
de德语
it意大利语
el希腊语
nl荷兰语
pl波兰语
bul保加利亚语
est爱沙尼亚语
dan丹麦语
fin芬兰语
cs捷克语
rom罗马尼亚语
slo斯洛文尼亚语
swe瑞典语
hu匈牙利语
cht繁体中文
vie越南语

错误码列表

当翻译结果无法正常返回时,请参考下表处理:

错误码含义解决方法
52000成功 
52001请求超时重试
52002系统错误重试
52003未授权用户检查您的 appid 是否正确,或者服务是否开通
54000必填参数为空检查是否少传参数
54001签名错误请检查您的签名生成方法
54003访问频率受限请降低您的调用频率
54004账户余额不足请前往管理控制台为账户充值
54005长query请求频繁请降低长query的发送频率,3s后再试
58000客户端IP非法检查个人资料里填写的 IP地址 是否正确可前往管理控制平台修改IP限制,IP可留空
58001译文语言方向不支持检查译文语言是否在语言列表里
58002服务当前已关闭请前往管理控制台开启服务
90107认证未通过或未生效请前往我的认证查看认证进度

常见问题

见通用翻译API技术文档:http://api.fanyi.baidu.com/api/trans/product/apidoc

 

更多精彩,请关注我的"今日头条号":Java云笔记
随时随地,让你拥有最新,最便捷的掌上云服务

 

  • 19
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
可以使用百度翻译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、付费专栏及课程。

余额充值