鱼C论坛

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

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

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

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

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

x
第54讲,跟着视频敲data,本人电脑‘data’与视频‘data’有所不同,两种都写了一次
本人电脑:
  1. data['i']='我爱你'
  2. data['from']='AUTO'
  3. data['to']='AUTO'
  4. data['smartresult']='dict'
  5. data['client']='fanyideskweb'
  6. data['salt']='16006545821886'
  7. data['sign']='a8c1d4e43dc52b129a9f37276b29b211'
  8. data['lts']='1600654582188'
  9. data['bv']='bbb3ed55971873051bc2ff740579bb49'
  10. data['doctype']='json'
  11. data['version']='2.1'
  12. data['keyfrom']='fanyi.web'
  13. data['action']='FY_BY_CLICKBUTTION'
复制代码


视频里:
  1. data['i']='我爱你'
  2. data['type']='AUTO'
  3. data['smartresult']='dict'
  4. data['client']='fanyideskweb'
  5. data['doctype']='json'
  6. data['version']='2.1'
  7. data['keyfrom']='fanyi.web'
  8. data['ue']='utf-8'
  9. data['typoResult']='true'
复制代码


最后运行的结果都是这个
  1. {"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缺一不可。否则请求不到数据。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-9-21 12:46:13 | 显示全部楼层
估计是url问题,要去掉: _o
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
另外代码贴全才能准确判定。
小甲鱼最新课程 -> https://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缺一不可。否则请求不到数据。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

  4. date = {}

  5. date['i'] = 'I love'
  6. date['from']= 'AUTO'
  7. date['to']= 'AUTO'
  8. date['smartresult'] = 'dict'
  9. date['client'] = 'fanyideskweb'
  10. date['salt'] ='16006938600377'
  11. date['sign']= '3ad24abcb708e97a655860210c3bfe0a'
  12. date['lts'] ='1600693860037'
  13. date['bv'] =' e9c283fcdef47746c8a8c8d0ed42d0ce'
  14. date['doctype'] = 'json'
  15. date['version'] = '2.1'
  16. date['keyfrom'] = 'anyi.web'
  17. date['action'] = 'FY_BY_CLICKBUTTION'
  18. data = urllib.parse.urlencode(date).encode('utf-8')

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

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

  21. print(html)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

  4. date = {}

  5. date['i'] = 'I love'
  6. date['from']= 'AUTO'
  7. date['to']= 'AUTO'
  8. date['smartresult'] = 'dict'
  9. date['client'] = 'fanyideskweb'
  10. date['salt'] ='16006938600377'
  11. date['sign']= '3ad24abcb708e97a655860210c3bfe0a'
  12. date['lts'] ='1600693860037'
  13. date['bv'] =' e9c283fcdef47746c8a8c8d0ed42d0ce'
  14. date['doctype'] = 'json'
  15. date['version'] = '2.1'
  16. date['keyfrom'] = 'anyi.web'
  17. date['action'] = 'FY_BY_CLICKBUTTION'
  18. data = urllib.parse.urlencode(date).encode('utf-8')

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

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

  21. print(html)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-29 01:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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