鱼C论坛

 找回密码
 立即注册
查看: 1402|回复: 8

[已解决]练习爬取有道翻译时出现错误,求助

[复制链接]
发表于 2022-3-22 12:13:57 | 显示全部楼层 |阅读模式

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

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

x
在学习小甲鱼的零基础入门python里的爬虫第二节,跟着小甲鱼练习了一下爬取有道翻译,程序如下:
import urllib.request
import urllib.parse

url = 'https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
data = {}
data['from'] = 'AUTO'
data['to'] = 'AUTO'
data['i'] = content
data['smartresult'] = 'dict'
data['client'] = 'fanyideskweb'
data['salt'] = '16479194564289'
data['sign'] = '1dd5674882aee0c529d9bb615fcb72c9'
data['lts'] = '1647919456428'
data['bv'] = '097b265c57844c587e0fd5b8ecb30a24'
data['doctype'] = 'json'
data['version'] = '2.1'
data['keyfrom'] = 'fanyi.web'
data['action'] = 'FY_BY_CLICKBUTTION'
data = urllib.parse.urlencode(data).encode('utf-8')

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

print(html)

但程序报错为:b'{"errorCode":50}'
百度了一下,说是有道加入了反爬机制,但还是求大神解答一下是什么原因
最佳答案
2022-3-22 12:24:43
是因为你的接口不对,你的代码应该改成这样:

  1. import urllib.request
  2. import urllib.parse

  3. url = 'http://fanyi.youdao.com/translate'
  4. data = {}
  5. data['from'] = 'AUTO'
  6. data['to'] = 'AUTO'
  7. data['i'] = content
  8. data['smartresult'] = 'dict'
  9. data['client'] = 'fanyideskweb'
  10. data['salt'] = '16479194564289'
  11. data['sign'] = '1dd5674882aee0c529d9bb615fcb72c9'
  12. data['lts'] = '1647919456428'
  13. data['bv'] = '097b265c57844c587e0fd5b8ecb30a24'
  14. data['doctype'] = 'json'
  15. data['version'] = '2.1'
  16. data['keyfrom'] = 'fanyi.web'
  17. data['action'] = 'FY_BY_CLICKBUTTION'
  18. data = urllib.parse.urlencode(data).encode('utf-8')

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

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

使用道具 举报

发表于 2022-3-22 12:15:03 | 显示全部楼层

回帖奖励 +1 鱼币

本帖最后由 isdkz 于 2022-3-22 12:22 编辑

是因为接口不对,你可以看一下这个:https://blog.csdn.net/qq_44770178/article/details/112613422

你的代码改成这样:
  1. import urllib.request
  2. import urllib.parse

  3. url = 'http://fanyi.youdao.com/translate'
  4. data = content
  5. data['from'] = 'AUTO'
  6. data['to'] = 'AUTO'
  7. data['i'] = 'hello'
  8. data['smartresult'] = 'dict'
  9. data['client'] = 'fanyideskweb'
  10. data['salt'] = '16479194564289'
  11. data['sign'] = '1dd5674882aee0c529d9bb615fcb72c9'
  12. data['lts'] = '1647919456428'
  13. data['bv'] = '097b265c57844c587e0fd5b8ecb30a24'
  14. data['doctype'] = 'json'
  15. data['version'] = '2.1'
  16. data['keyfrom'] = 'fanyi.web'
  17. data['action'] = 'FY_BY_CLICKBUTTION'
  18. data = urllib.parse.urlencode(data).encode('utf-8')

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

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

使用道具 举报

发表于 2022-3-22 12:23:03 | 显示全部楼层
是因为你的接口不对,

你可以看一下这个:https://blog.csdn.net/qq_44770178/article/details/112613422
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-22 12:23:38 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-22 12:24:43 | 显示全部楼层    本楼为最佳答案   
是因为你的接口不对,你的代码应该改成这样:

  1. import urllib.request
  2. import urllib.parse

  3. url = 'http://fanyi.youdao.com/translate'
  4. data = {}
  5. data['from'] = 'AUTO'
  6. data['to'] = 'AUTO'
  7. data['i'] = content
  8. data['smartresult'] = 'dict'
  9. data['client'] = 'fanyideskweb'
  10. data['salt'] = '16479194564289'
  11. data['sign'] = '1dd5674882aee0c529d9bb615fcb72c9'
  12. data['lts'] = '1647919456428'
  13. data['bv'] = '097b265c57844c587e0fd5b8ecb30a24'
  14. data['doctype'] = 'json'
  15. data['version'] = '2.1'
  16. data['keyfrom'] = 'fanyi.web'
  17. data['action'] = 'FY_BY_CLICKBUTTION'
  18. data = urllib.parse.urlencode(data).encode('utf-8')

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

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

使用道具 举报

发表于 2022-3-22 12:33:03 | 显示全部楼层
把地址去掉那个 "_o"
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-29 13:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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