爬虫day3,通过爬虫有道翻译实现汉译英
生活随笔
收集整理的這篇文章主要介紹了
爬虫day3,通过爬虫有道翻译实现汉译英
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
找到網站翻譯變化的表單數據
通過驗證,發現向地址post的時候,這三個是變化的,所以找到這三個數據是如何計算出來的,即能成功通過爬蟲訪問有道翻譯
抓包進入該js文件中查找如何生成的
按ctrl+f進行查找,找到表單數據是怎么生成的,我們選擇關鍵詞
這里我們選擇smartresult進行查找,定位到和表單數據相同的位置
在此我們可以發現要求的三個數據,通過r的屬性得到,而r又是通過方法generateSaltSign方法得到,所以繼續定位此方法,檢索到r的生成之后
查找大括號里的其他內容
終于找到了變量r的生成,將其翻譯為python代碼后實現最終爬蟲程序
代碼實現
import requests,hashlib,time,random,jsonclass Youdao(object):def __init__(self,word):self.url = 'https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36 Edg/92.0.902.55','Cookie': 'OUTFOX_SEARCH_USER_ID=-1090926195@10.108.160.102; JSESSIONID=aaaQDsPz4cG4p8FxqxWRx; OUTFOX_SEARCH_USER_ID_NCOO=1862606847.6539812; fanyi-ad-id=113723; fanyi-ad-closed=1; ___rl__test__cookies=1627530303255','Referer': 'https://fanyi.youdao.com/'}self.form_data = Noneself.word = worddef generate_form_data(self):"""var t = n.md5(navigator.appVersion), r = "" + (new Date).getTime(), i = r + parseInt(10 * Math.random(), 10);return {ts": "r,salt": "i,sign": "n.md5("fanyideskweb" + e + i + "Y2FYu%TNSbMCxc3t2u^XT"):return:"""ts = str((time.time())*1000) # 13位字符salt = ts + str(random.randint(0,9))sign = "fanyideskweb" + self.word + salt + "Y2FYu%TNSbMCxc3t2u^XT"md5 = hashlib.md5()md5.update(sign.encode())sign = md5.hexdigest()self.form_data = {"i": self.word,"from": "AUTO","to": "AUTO","smartresult": "dict","client": "fanyideskweb","salt": salt,"sign": sign,"lts": ts,"bv": "1b31e1f5e3e687f8cbb5320699f8834e","doctype": "json","version": "2.1","keyfrom": "fanyi.web","action": "FY_BY_REALTlME",}def get_data(self):response = requests.post(self.url,headers = self.headers,data=self.form_data)return response.contentdef parse(self,res):dict_data = json.loads(res)return dict_data['smartResult']['entries'][1]def run(self):self.generate_form_data()res = self.get_data()# 解析數據print(self.parse(res))if __name__ == '__main__':# 參數為你要翻譯的詞語youdao =Youdao('翻譯')youdao.run()運行結果:
總結
以上是生活随笔為你收集整理的爬虫day3,通过爬虫有道翻译实现汉译英的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: platEMO里多目标进化算法对应的参考
- 下一篇: 【POI每日题解 #5】 DWU-Dou