# 翻译原理:原文(请求)——》译文(响应)
import urllib.request as ur
import urllib.parse as up
import json as j
# url里面的_o是有道的反爬虫机制,用的时候需要去掉
# url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
# 提交的数据是个字典
data = {
'i': '反爬虫机制',# 这个就是将要翻译的内容
'from': 'AUTO',
'to': 'AUTO',
'smartresult': 'dict',
'client': 'fanyideskweb',
'salt': '15960928838537',
'sign': '44167cfb01f66b4bc9d42c9e7d0b6d6d',
'ts': '1596092883853',
'bv': '94d04da9bee8870ad9ad8714b54f2bea',
'doctype': 'json',
'version': '2.1',
'keyfrom': 'fanyi.web',
'action': 'FY_BY_REALTlME'
}
# 转成服务器能看懂的格式
data = up.urlencode(data).encode('utf-8')
# 第二个参数代表要向服务器提交的数据,也就是POST
# 如果不填第二个参数的话默认访问方式为GET
response = ur.urlopen(url, data)
html = response.read().decode('utf-8')
# 用json转码
html = j.loads(html);
print(html['translateResult'][0][0]['tgt'])
那个_o需要注意下,这是有道的反爬虫机制