翻译API HTTP地址
http://api.fanyi.baidu.com/api/trans/vip/translate
您需要向该地址通过POST或GET方法发送下列字段来访问服务
字段名 | 类型 | 必填参数 | 描述 | 备注 |
q | TEXT | Y | 请求翻译query | UTF-8编码 |
from | TEXT | Y | 翻译源语言 | 语言列表(可设置为auto) |
to | TEXT | Y | 译文语言 | 语言列表(不可设置为auto) |
appid | INT | Y | APP ID | 可在管理控制台查看 |
salt | INT | Y | 随机数 | |
sign | TEXT | Y | 签名 | appid+q+salt+密钥 的MD5值 |
返回结果是json格式,包含以下字段
字段名 | 类型 | 描述 |
from | TEXT | 翻译源语言 |
to | TEXT | 译文语言 |
trans_result | MIXED LIST | 翻译结果 |
src | TEXT | 原文 |
dst | TEXT | 译文 |
生成sign
>拼接字符串1
拼接appid=2015063000000001+q=apple+salt=1435660288+密钥=12345678
得到字符串1 =2015063000000001apple143566028812345678
>计算签名sign(对字符串1做md5加密,注意计算md5之前,串1必须为UTF-8编码)
以上为调用参数和格式
这是我写的url请求
这是返回内容json(终于知道这种格式叫什么名了)
{"from":"en","to":"zh","trans_result":[{"src":"apple","dst":"\u82f9\u679c"}]}
\u82f9\u679c为unicode编码转换中文为苹果
# coding=utf-8
import http.client #python2 中为httplib等价于python3中的http.client
#import md5
import hashlib
import urllib
import random
appid = '20151113000005349'
secretKey = 'osubCEzlGjzvw8qdQc41'
httpClient = None
myurl = '/api/trans/vip/translate'
q = 'hello'
fromLang = 'en'
toLang = 'zh'
salt = random.randint(32768, 65536)
sign = appid+q+str(salt)+secretKey
#m1 = md5.new()
#m1.update(sign)
#sign = m1.hexdigest()
print(type(sign))
ml = hashlib.md5()
# Tips
# 此处必须声明encode
# 若写法为hl.update(str) 报错为: Unicode-objects must be encoded before hashing
ml.update(sign.encode(encoding='utf-8'))
sign = ml.hexdigest()
myurl = myurl+'?appid='+appid+'&q='+urllib.request.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()
print(eval(response.read().decode('utf-8'))['trans_result'][0]['dst']) #
except Exception as e:
print(e)
finally:
if httpClient:
httpClient.close()