鱼C论坛

 找回密码
 立即注册
查看: 1671|回复: 5

[已解决]又又又出错了,爬取有道翻译出错了,求解

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

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

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

x
我写的代码如下:
import urllib.request
import urllib.parse

url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'

data = {}

data['i'] = 'hello world'
data['from'] = 'AUTO'
data['to'] = 'AUTO'
data['smartresult'] = 'dict'
data['client'] = 'fanyideskweb'
data['salt'] = '15979710202036'
data['sign'] = '98b135fb6a908cd47e75aef09b704a9f'
data['lts'] = '1597971020203'
data['bv'] = '94d04da9bee8870ad9ad8714b54f2bea'
data['doctype'] =  'json'
data['version'] = '2.1'
data['keyfrom'] = 'fanyi.web'
data['action'] = 'FY_BY_REALTlME'

data = urllib.parse.urlencode(data).decode('utf-8')

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

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

print(html)

跟甲鱼老师一步步写的,其中Form Data不一样,于是我就按网页上的写了,但是这个代码点F5运行的话没有任何反应,也没有报错,这是为什么呢??
我看视频课程上甲鱼老师的可以正常运行啊
最佳答案
2020-8-21 09:39:47
本帖最后由 Twilight6 于 2020-8-21 09:40 编辑


有道反爬,要把 url 中的 _o 去掉

而且你代码中的 urllib.parse.urlencode(data).decode('utf-8')  改成 urllib.parse.urlencode(data).encode('utf-8'),就行了

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

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

  4. data = {}

  5. data['i'] = 'hello world'
  6. data['from'] = 'AUTO'
  7. data['to'] = 'AUTO'
  8. data['smartresult'] = 'dict'
  9. data['client'] = 'fanyideskweb'
  10. data['salt'] = '15979710202036'
  11. data['sign'] = '98b135fb6a908cd47e75aef09b704a9f'
  12. data['lts'] = '1597971020203'
  13. data['bv'] = '94d04da9bee8870ad9ad8714b54f2bea'
  14. data['doctype'] =  'json'
  15. data['version'] = '2.1'
  16. data['keyfrom'] = 'fanyi.web'
  17. data['action'] = 'FY_BY_REALTlME'

  18. data = urllib.parse.urlencode(data).encode('utf-8')

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

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

  21. print(html)
复制代码


运行结果:
  1.                           {"type":"EN2ZH_CN","errorCode":0,"elapsedTime":1,"translateResult":[[{"src":"hello world","tgt":"你好,世界"}]]}
复制代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-21 09:39:47 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-8-21 09:40 编辑


有道反爬,要把 url 中的 _o 去掉

而且你代码中的 urllib.parse.urlencode(data).decode('utf-8')  改成 urllib.parse.urlencode(data).encode('utf-8'),就行了

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

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

  4. data = {}

  5. data['i'] = 'hello world'
  6. data['from'] = 'AUTO'
  7. data['to'] = 'AUTO'
  8. data['smartresult'] = 'dict'
  9. data['client'] = 'fanyideskweb'
  10. data['salt'] = '15979710202036'
  11. data['sign'] = '98b135fb6a908cd47e75aef09b704a9f'
  12. data['lts'] = '1597971020203'
  13. data['bv'] = '94d04da9bee8870ad9ad8714b54f2bea'
  14. data['doctype'] =  'json'
  15. data['version'] = '2.1'
  16. data['keyfrom'] = 'fanyi.web'
  17. data['action'] = 'FY_BY_REALTlME'

  18. data = urllib.parse.urlencode(data).encode('utf-8')

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

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

  21. print(html)
复制代码


运行结果:
  1.                           {"type":"EN2ZH_CN","errorCode":0,"elapsedTime":1,"translateResult":[[{"src":"hello world","tgt":"你好,世界"}]]}
复制代码


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

使用道具 举报

发表于 2020-8-21 09:54:48 | 显示全部楼层
用requests多香~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-29 15:58:11 | 显示全部楼层
尽信书则不如无书,小甲鱼的书是几年前的了,代码要不断更新才能适应。
你的代码倒数第4行,那里有错误,我帮你改了一下,decode打错啦,应该是encode。

我改了一下,现在应该可以了,你试一下。
  1. import urllib.request
  2. import urllib.parse

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

  4. data = {}

  5. data['i'] = 'hello world'
  6. data['from'] = 'AUTO'
  7. data['to'] = 'AUTO'
  8. data['smartresult'] = 'dict'
  9. data['client'] = 'fanyideskweb'
  10. data['salt'] = '15979710202036'
  11. data['sign'] = '98b135fb6a908cd47e75aef09b704a9f'
  12. data['lts'] = '1597971020203'
  13. data['bv'] = '94d04da9bee8870ad9ad8714b54f2bea'
  14. data['doctype'] =  'json'
  15. data['version'] = '2.1'
  16. data['keyfrom'] = 'fanyi.web'
  17. data['action'] = 'FY_BY_REALTlME'

  18. data = urllib.parse.urlencode(data).encode('utf-8')

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

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

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

使用道具 举报

发表于 2020-12-13 21:12:34 | 显示全部楼层
俺想请教一下你这个有道是在哪里找到的呀,我找的翻译不了呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-23 22:39:06 | 显示全部楼层
太强了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 16:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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