简介

使用Python requests 请求有道翻译api:实现了函数传参传入要翻译的内容后,命令行打印出翻译后的内容。
库依赖:requests、json、io、sys、re、hashlib、time、platform

源码

源码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# -*- coding: UTF-8 -*-

__author__ = 'Mr.Bluyee'

import requests
import json
import io
import sys
import re
import hashlib
import time
import platform

os_info = platform.platform()

if os_info[0] == 'W':
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')
#改变标准输出的默认编码

def translate(content):
url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
headers = {
'Cookie':'OUTFOX_SEARCH_USER_ID=1799185238@10.169.0.83;',
'Origin': 'http://fanyi.youdao.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
'Referer': 'http://fanyi.youdao.com/',
}
m = hashlib.md5()
d = content
u = 'fanyideskweb'
f = str(int(time.time()*1000))
c = "ebSeFb%=XZ%T[KZ)c(sy!"
m.update((u + d + f + c).encode('utf-8'))
payload = {
'i':d,
'from':'AUTO',
'to':'AUTO',
'smartresult':'dict',
'client':u,
'salt':f,
'sign':m.hexdigest(),
'doctype':'json',
'version':'2.1',
'keyfrom':'fanyi.web',
'action':'FY_BY_ENTER',
'typoResult':'false'
}
r = requests.post(url,headers = headers ,data = payload).json()
if r['errorCode'] == 0:
#print(r['translateResult'][0][0]['tgt'])
return r['translateResult'][0][0]['tgt']
else:
#print(r)
return '翻译错误'



def main():
print(translate('有道翻译api接口'))

if __name__ == '__main__':
main()

示例:

上面代码在命令行打印的内容为:

1
Youdao translation API interface