python爬取有道翻译
实现原理
操作步骤
注意事项
实现原理
利用urllib包中的request对象模拟浏览器访问有道翻译服务器(发送相同格式的request)。
用urllib包中的parse来将数据转化为相同格式。
得到的相应通过编码之后,以dict形式取出翻译内容。
import urllib.request
import urllib.parse
import json
url = '/translate?smartresult=dict&smartresult=rule'
while True:
content = input('请输入翻译内容:')
data = {}
data['i'] = content
data['from'] = 'AUTO'
data['to'] = 'AUTO'
data['smartresult'] = 'dict'
data['client'] = 'fanyideskweb'
data['salt'] = '15613765644784'
data['sign'] = '5caabbf646f6585277b7cebf45f18244'
data['ts'] = '1561376564478'
data['bv'] = '6074bfcb52fb292f0428cb1dd669cfb8'
data['doctype'] = 'json'
data['version'] = '2.1'
data['keyfrom'] = 'fanyi.web'
data['action'] = 'FY_BY_REALTlME'
data = urllib.parse.urlencode(data).encode('utf-8')
r = urllib.request.urlopen(url,data)
html = r.read().decode('utf-8')
target = json.loads(html)
print("翻译:%s"%(target['translateResult'][0][0]['tgt']))
print('-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-')
操作步骤
访问翻译页面,在一次翻译后捕捉提交方式为post的头文件,在此头文件中找到requestURL,这个是用来访问的地址。再找到form data,复制到py文件中并封装成dict,通过parse的方法将其变为服务器会接收的格式,通过URLopen方法进行一次访问,接收数据,处理数据。
注意事项
有道翻译已经做了反爬虫处理,需要将url中的_o去除,但是这样就只支持汉译英和外译汉了。汉语到其它语言还没法处理。