当前位置: 代码迷 >> 综合 >> Python3.7 有道翻译爬取{“errorCode“: 50} 问题 分析(三)
  详细解决方案

Python3.7 有道翻译爬取{“errorCode“: 50} 问题 分析(三)

热度:51   发布时间:2023-12-12 22:24:05.0

问题描述: python 3.7 模拟有道翻译,报 {“errorCode“: 50} 错误

解决方法:引用的 request 库, 而不是原始的 urllib.request

https://tendcode.com/article/youdao-spider/

该代码如下

# -*- coding: utf-8 -*-
import requests
import hashlib
import time
import json
import randomclass Youdao(object):def __init__(self, msg):self.msg = msgself.url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'self.D = "ebSeFb%=XZ%T[KZ)c(sy!"self.salt = self.get_salt()self.sign = self.get_sign()def get_md(self, value):'''md5加密'''m = hashlib.md5()# m.update(value)m.update(value.encode('utf-8'))return m.hexdigest()def get_salt(self):'''根据当前时间戳获取salt参数'''s = int(time.time() * 1000) + random.randint(0, 10)return str(s)def get_sign(self):'''使用md5函数和其他参数,得到sign参数'''s = "fanyideskweb" + self.msg + self.salt + self.Dreturn self.get_md(s)def get_result(self):'''headers里面有一些参数是必须的,注释掉的可以不用带上'''headers = {
    # 'Accept': 'application/json, text/javascript, */*; q=0.01',# 'Accept-Encoding': 'gzip, deflate',# 'Accept-Language': 'zh-CN,zh;q=0.9,mt;q=0.8',# 'Connection': 'keep-alive',# 'Content-Length': '240',# 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','Cookie': 'OUTFOX_SEARCH_USER_ID=-2022895048@10.168.8.76;',# 'Host': 'fanyi.youdao.com',# 'Origin': 'http://fanyi.youdao.com','Referer': 'http://fanyi.youdao.com/','User-Agent': 'Mozilla/5.0 (Windows NT 6.2; rv:51.0) Gecko/20100101 Firefox/51.0',# 'X-Requested-With': 'XMLHttpRequest'}data = {
    'i': self.msg,'from': 'AUTO','to': 'AUTO','smartresult': 'dict','client': 'fanyideskweb','salt': self.salt,'sign': self.sign,'doctype': 'json','version': '2.1','keyfrom': 'fanyi.web','action': 'FY_BY_CL1CKBUTTON','typoResult': 'true'}html = requests.post(self.url, data=data, headers=headers).textprint(html)infos = json.loads(html)if 'translateResult' in infos:try:result = infos['translateResult'][0][0]['tgt']print(result)except:passif __name__ == '__main__':y = Youdao('你是我的小苹果,我是你的优乐美')y.get_result()

方法在这里也有点不一样:
在这里插入图片描述

  相关解决方案