有道词典在线翻译爬虫

1.打开有道在线翻译,并请求翻译
1.1获取翻译接口
有道词典
1.2两次翻译数据对比
第一次
在这里插入图片描述
第二次
在这里插入图片描述
总结:
我们发现请求数据有差异:
salt,ts,sign,并且可以看到i对应翻译词组

2.查找js处理逻辑
2.1查看对应js
在这里插入图片描述
2.2处理逻辑
在这里插入图片描述
2.3python处理

word = "test"
import hashlib
import time
import random
# var t = n.md5(navigator.appVersion),对应浏览器版本
t = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
bv = hashlib.md5(bytes(t,encoding="utf-8")).hexdigest()
#b4046c447614dcbe06d949fe3062a42a
r = str(int(round(time.time(),3)*1000))
ts = r      #1585970420994
print(ts)
i = ts + str(random.randint(1,10))
salt = i #15859705441292
sign = hashlib.md5(bytes("fanyideskweb" + word + salt +"Nw(nmmbP%A-r6U3EUn]Aj",encoding="utf-8")).hexdigest()
print(sign) #582d24148760d00627461c99907b9476

3请求测试

import requests
import hashlib
import time
import random

# var t = n.md5(navigator.appVersion),对应浏览器版本
t = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
def get_auth_data(keyword):
    bv = hashlib.md5(bytes(t,encoding="utf-8")).hexdigest()
    #b4046c447614dcbe06d949fe3062a42a
    # 70244e0061db49a9ee62d341c5fed82a
    r = str(int(round(time.time(),3)*1000))
    ts = r      #1585970420994
    i = ts + str(random.randint(1,10))
    salt = i #15859705441292
    sign = hashlib.md5(bytes("fanyideskweb" + keyword + salt +"Nw(nmmbP%A-r6U3EUn]Aj",encoding="utf-8")).hexdigest()
    return bv,ts,salt,sign

def get_init_cookies():
    headers = {"User-Agent": t}
    res = requests.get("http://fanyi.youdao.com/",headers=headers)
    cookie_list = []
    for cookie in res.cookies:
        cookie_list.append("%s=%s"%(cookie.name,cookie.value))
    return ";".join(cookie_list)

def translate(keyword):
    bv,ts,salt,sign = get_auth_data(keyword)
    cookies = get_init_cookies()
    url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"
    headers = {"Content-Type": "application/x-www-form-urlencoded",
               "User-Agent": t,
               "Referer":"http://fanyi.youdao.com/",
               "Cookie":cookies}
    data = {"i": keyword,
            "from": "zh-CHS",
            "to": "en",
            "smartresult": "dict",
            "client": "fanyideskweb",
            "salt": salt,
            "sign": sign,
            "ts": ts,
            "bv": bv,
            "doctype": "json",
            "version": "2.1",
            "keyfrom": "fanyi.web",
            "action": "Y_BY_CLICKBUTTION"}
    res = requests.post(url,params=data,headers=headers)
    print(res.text)
 
translate("测试")

返回:
{
“translateResult”: [[{
“tgt”: “test”,
“src”: “测试”
}
]],
“errorCode”: 0,
“type”: “zh-CHS2en”,
“smartResult”: {
“entries”: ["", “[试验] test\r\n”, “measurement\r\n”],
“type”: 1
}
}

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值