python爬取有道翻译

有道翻译网站: http://fanyi.youdao.com/ 

在翻译栏输入 I Love You Baby  然后f12 点击翻译

python爬取有道翻译_第1张图片

在headers里 的Request URL: 是请求地址:

这里是:http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule

注意下这里的请求地址translate_o  而在实际python写的时候 _o 不能要不然会报错.

下面看一下salt 和 sign的取法

python爬取有道翻译_第2张图片

点击第四个js,点击下面的{} 格式化代码,搜索salt ,这里有三个,可以打断点,然后点击翻译,看具体在哪个地方停.

python爬取有道翻译_第3张图片这里可以看到 salt是个时间戳,sign 是由 s n r o 组合的 MD5加密

所有参数搞清,下面测试代码

import urllib.request
import urllib.parse
import time
import random
import hashlib
url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
data = {}
i = 'I lov you baby'
data['i']=i
data['from']='AUTO'
data['to']='AUTO'
data['smartresult']='dict'
data['client']='fanyideskweb'
data['doctype']='json'
data['version']='2.1'
data['keyfrom']='fanyi.web'
data['action']='FY_BY_REALTIME'
data['typoResult']='false'
u = 'fanyideskweb'
f = str(int(time.time()*1000)+random.randint(1,10))
c = "ebSeFb%=XZ%T[KZ)c(sy!"
sign = hashlib.md5((u+i+f+c).encode('utf-8')).hexdigest()
data['salt']=f
data['sign']=sign
data= urllib.parse.urlencode(data).encode('utf-8')
response = urllib.request.urlopen(url,data)
html =  response.read().decode('utf-8')
print(html)
 

 

你可能感兴趣的:(python)