aby321

 

有道在线翻译:http://fanyi.youdao.com/

在python3中,使用post提交数据进行翻译,默认中英,可更改语言

 

 

按F12 打开开发者工具,在左侧输入“我爱你”翻译,在右侧观察network中提交的post数据Form Data格式,如下

 

在preview中查看翻译结果,可以看出是字典格式

逻辑关系清楚之后,那么就在python3模拟提交Form Data数据来获取翻译结果吧

data = {\'i\': ‘我爱你’:\'),
                \'from\': \'AUTO\',#默认中文
                \'to\': \'AUTO\', #默认英文
                \'smartresult\': \'dict\',
                \'client\': \'fanyideskweb\',
                \'salt\': \'\',  # 这两个字段空着也行???
                \'sign\': \'\',
                \'doctype\': \'json\',
                \'version\': \'2.1\',
                \'keyfrom\': \'fanyi.web\',
                \'action\': \'FY_BY_REALTIME\',
                \'typoResult\': \'false\'}

其中

i:待翻译的内容

from:默认中文,可改

to:默认英文,可改

salt和sign可以直接粘贴过来,或者研究源码生成的原理(应该是一个随机码一个md5加密码),but经过我测试这两个字段为空也木有问题可以运行

 

运行结果:

{\'type\': \'ZH_CN2EN\', \'errorCode\': 0, \'elapsedTime\': 2, \'translateResult\': [[{\'src\': \'我爱你\', \'tgt\': \'I love you\'}]]}

 

附源码:

 

 1 #Author:ZM 2019.7.18
 2 \'\'\'
 3 利用有道翻译的表单Form Data 格式,交互翻译内容
 4 默认形式是中-英
 5 测试发现salt和sign可以为空
 6 \'\'\'
 7 
 8 import urllib.request
 9 import urllib.parse
10 import json
11 
12 def translate( data):
13     \'\'\'
14     翻译
15     :param data:<dic> form data
16     :return: None
17     \'\'\'
18     url = \'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule\'
19     data = urllib.parse.urlencode(data).encode(\'utf-8\')
20     r = urllib.request.urlopen(url, data)
21     html = r.read().decode(\'utf-8\')
22     #print(html.strip())  # html是字符串str格式
23     target = json.loads(html)
24     #print(target)  # target是字典dict格式
25     print(target[\'translateResult\'][0][0][\'tgt\'])
26 
27 if __name__==\'__main__\':
28 
29     while True:
30         data = {\'i\': input(\'请输入中文(退出请按 " q "):\'),
31                 \'from\': \'AUTO\',#默认中文
32                 \'to\': \'AUTO\', #默认英文
33                 \'smartresult\': \'dict\',
34                 \'client\': \'fanyideskweb\',
35                 \'salt\': \'\',  # 这两个字段空着也行???
36                 \'sign\': \'\',
37                 \'doctype\': \'json\',
38                 \'version\': \'2.1\',
39                 \'keyfrom\': \'fanyi.web\',
40                 \'action\': \'FY_BY_REALTIME\',
41                 \'typoResult\': \'false\'}
42         if data[\'i\'] == \'q\':
43             break
44         else:
45             translate(data)

 

分类:

技术点:

相关文章:

  • 2021-12-12
  • 2021-08-06
  • 2021-12-10
  • 2021-10-27
  • 2021-12-20
  • 2021-11-13
猜你喜欢
  • 2021-11-29
  • 2021-10-17
  • 2021-12-20
  • 2021-11-24
  • 2021-08-21
  • 2021-04-01
  • 2021-12-10
相关资源
相似解决方案