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语音合成等资源,如有相关需求请联系[email protected]
# 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云笔记
随时随地,让你拥有最新,最便捷的掌上云服务

发布了165 篇原创文章 · 获赞 270 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/weixin_44259720/article/details/104648444