鱼C论坛

 找回密码
 立即注册
查看: 1843|回复: 4

[已解决]python爬虫翻译(第54讲)

[复制链接]
发表于 2020-9-21 11:01:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
第54讲,跟着视频敲data,本人电脑‘data’与视频‘data’有所不同,两种都写了一次
本人电脑:
data['i']='我爱你'
data['from']='AUTO'
data['to']='AUTO'
data['smartresult']='dict'
data['client']='fanyideskweb'
data['salt']='16006545821886'
data['sign']='a8c1d4e43dc52b129a9f37276b29b211'
data['lts']='1600654582188'
data['bv']='bbb3ed55971873051bc2ff740579bb49'
data['doctype']='json'
data['version']='2.1'
data['keyfrom']='fanyi.web'
data['action']='FY_BY_CLICKBUTTION'

视频里:
data['i']='我爱你'
data['type']='AUTO'
data['smartresult']='dict'
data['client']='fanyideskweb'
data['doctype']='json'
data['version']='2.1'
data['keyfrom']='fanyi.web'
data['ue']='utf-8'
data['typoResult']='true'

最后运行的结果都是这个
{"errorCode":50}
不知出了什么问题
最佳答案
2020-9-21 15:35:22
有道翻译有反爬措施。
一、headers
设置一下User-Agent、referer
二、data
1、lts是一个13位时间戳,salt是 lts + 1位随机数
2、sign是一个加密验证,每次请求都是不一样的,利用MD5加密的参数是:client + i + salt + 一个固定字符串 "]BjuETDhU)zqSxf-=B#7m"
3、bv,这个也是一个MD5加密的参数,加密的内容是当前使用的浏览器的User-Agent,去掉其中的 " Mozilla/ ",如果User-Agent不变,这个参数也不需要改变,否则要重新利用MD5生成。
三、cookie
value填自己浏览器上的。
OUTFOX_SEARCH_USER_ID: ""

headers、data参数、cookie缺一不可。否则请求不到数据。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-21 12:46:13 | 显示全部楼层
估计是url问题,要去掉: _o
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
另外代码贴全才能准确判定。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-21 15:35:22 | 显示全部楼层    本楼为最佳答案   
有道翻译有反爬措施。
一、headers
设置一下User-Agent、referer
二、data
1、lts是一个13位时间戳,salt是 lts + 1位随机数
2、sign是一个加密验证,每次请求都是不一样的,利用MD5加密的参数是:client + i + salt + 一个固定字符串 "]BjuETDhU)zqSxf-=B#7m"
3、bv,这个也是一个MD5加密的参数,加密的内容是当前使用的浏览器的User-Agent,去掉其中的 " Mozilla/ ",如果User-Agent不变,这个参数也不需要改变,否则要重新利用MD5生成。
三、cookie
value填自己浏览器上的。
OUTFOX_SEARCH_USER_ID: ""

headers、data参数、cookie缺一不可。否则请求不到数据。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-22 01:02:09 | 显示全部楼层
url里_o去掉就行了
import urllib.request
import urllib.parse

url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"

date = {}

date['i'] = 'I love'
date['from']= 'AUTO'
date['to']= 'AUTO'
date['smartresult'] = 'dict'
date['client'] = 'fanyideskweb'
date['salt'] ='16006938600377'
date['sign']= '3ad24abcb708e97a655860210c3bfe0a'
date['lts'] ='1600693860037'
date['bv'] =' e9c283fcdef47746c8a8c8d0ed42d0ce'
date['doctype'] = 'json'
date['version'] = '2.1'
date['keyfrom'] = 'anyi.web'
date['action'] = 'FY_BY_CLICKBUTTION'
data = urllib.parse.urlencode(date).encode('utf-8')

response = urllib.request.urlopen(url,data)

html = response.read().decode('utf-8')

print(html)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-30 15:29:39 | 显示全部楼层
是这样的,书本已经是几年前了,代码需要不断迭代,现在有道有了反爬虫的措施。
你要保证你的headers、data参数、cookie这3个必须是没有任何问题的,我帮你改了一下。
import urllib.request
import urllib.parse

url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"

date = {}

date['i'] = 'I love'
date['from']= 'AUTO'
date['to']= 'AUTO'
date['smartresult'] = 'dict'
date['client'] = 'fanyideskweb'
date['salt'] ='16006938600377'
date['sign']= '3ad24abcb708e97a655860210c3bfe0a'
date['lts'] ='1600693860037'
date['bv'] =' e9c283fcdef47746c8a8c8d0ed42d0ce'
date['doctype'] = 'json'
date['version'] = '2.1'
date['keyfrom'] = 'anyi.web'
date['action'] = 'FY_BY_CLICKBUTTION'
data = urllib.parse.urlencode(date).encode('utf-8')

response = urllib.request.urlopen(url,data)

html = response.read().decode('utf-8')

print(html)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 04:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表