小编分别写过有道,百度的翻译Demo,个人感觉有这么几个区别:
- 代码量:百度更简洁,有道太冗余;
- 是否收费:有道翻译免费,百度翻译超过一定量是要收费的,所以要验证key;
- 规范性:相比有道翻译,百度翻译API渠道更正规,个人觉得。
申请百度密匙:
既然百度翻译需要验证密匙,我们就有必要先申请账号,获取密匙:
百度翻译开放平台:http://api.fanyi.baidu.com/api/trans/product/index
流程如下:
- 按照提示注册账号,获取 APP ID 和 密钥 ;
- 申请开通通用翻译API服务 ;
- 参考百度翻译提供的通用翻译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