import urllib.request
import urllib.parse
import json
content = input("请输入翻译的内容:")
url = \'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule\'
data = {}
data[\'i\'] = content
data[\'from\'] = \'en\'
data[\'to\'] = \'zh-CHS\'
data[\'smartresult\'] = \'dict\'
data[\'client\'] = \'fanyideskweb\'
data[\'salt\'] = \'15934837793668\'
data[\'sign\'] = \'6c263b05b4511c7c9fc9e540d8cb3b42\'
data[\'ts\'] = \'1593483779366\'
data[\'bv\'] = \'dd0840fad0d96c2e9de5a4f181a39d98\'
data[\'doctype\'] = \'json\'
data[\'version\'] = \'2.1\'
data[\'keyfrom\'] = \'fanyi.web\'
data[\'action\'] = \'FY_BY_CLICKBUTTION\'
data = urllib.parse.urlencode(data).encode(\'utf-8\')
response = urllib.request.urlopen(url,data)
html =response.read().decode(\'utf-8\')
print(html)
target = json.loads(html)
print("翻译的结果是:%s" %(target[\'translateResult\'][0][0][\'tgt\']))
因为有道翻译有反爬虫机制,所以简单的爬肯定不行,修改一下url,去掉_o
现在的url:http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule 原来的url:http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
附上重要代码讲解
请输入翻译的内容:jia
{"type":"EN2ZH_CN","errorCode":0,"elapsedTime":2,"translateResult":[[{"src":"jia","tgt":"贾"}]]}
>>> target = json.loads(html)
>>> target[\'translateResult\'][0][0]
{\'src\': \'jia\', \'tgt\': \'贾\'}
>>> target[\'translateResult\'][0][0][\'tgt\']
\'贾\'