鱼C论坛

 找回密码
 立即注册
查看: 1314|回复: 15

关于054论一只爬虫的自我修养2:实战的问题,最后打印会报错,网上搜索后尝试后仍不....

[复制链接]
发表于 2019-4-8 19:29:39 | 显示全部楼层 |阅读模式

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

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

x
  1. #用python模拟有道词典翻译
  2. import urllib.request
  3. import urllib.parse
  4. import json

  5. content = input("需要翻译的内容是:")
  6. i =smartresult=client=salt=sign=ts=bv=doctype=version=keyfrom=action=typoResult= 0


  7. url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"
  8. data = {}
  9. data[i] = content
  10. #data[from] = 'AUTO'
  11. #data[to]= 'AUTO'
  12. data[smartresult]= 'dict'
  13. data[client]= 'fanyideskweb'
  14. data[salt]= '15547180512831'
  15. data[sign]= '6d104f90ff7affb0bf12097b220bbe1d'
  16. data[ts]= '1554718051283'
  17. data[bv]= '4adace860e235c9a32a4c7ad3c1d2706'
  18. data[doctype]= 'json'
  19. data[version]= '2.1'
  20. data[keyfrom]= 'fanyi.web'
  21. data[action]= 'FY_BY_CLICKBUTTION'
  22. data[typoResult]= 'false'

  23. data = urllib.parse.urlencode(data).encode("utf-8")
  24. response = urllib.request.urlopen(url,data)
  25. html = response.read().decode("utf-8")


  26. target = json.loads(html)
  27. # print(type(target))
  28. # for each in target:
  29. #     print(each)
  30. print("翻译结果是: %s" % (target['translateResult'][0][0]['tgt']))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-4-10 16:05:21 | 显示全部楼层
关于这个问题,我后来想了想,小甲鱼的视频是几年前的,可能当时用这种方法可以获取,当时技术飞速发展的今天,这种方法可能被河蟹了.... 所以我也就没怎么再纠结了,等以后学完了,回头来看,可能就很容易的解决了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-8 22:30:14 | 显示全部楼层
有道加密了。我记得这一课的视频有弹幕教学的,弹幕里有解决办法,很早之前另外一个搬运小甲鱼视频的up主,点击量很多的那个
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-8 22:55:59 | 显示全部楼层
url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"

把url换掉试下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-8 23:54:29 | 显示全部楼层

我也遇到这个问题了:


data[salt]= '15547180512831'
data[sign]= '6d104f90ff7affb0bf12097b220bbe1d'
data[ts]= '1554718051283'
data[bv]= '4adace860e235c9a32a4c7ad3c1d2706'

这几个字段貌似有特殊含义会被校验 = =。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-9 07:48:07 | 显示全部楼层
url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"
url改了就好了
url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
去掉了_o
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-9 09:02:55 | 显示全部楼层
把 _o去掉。"您的请求来源非法,商业用途使用请关注有道翻译API官方网站"
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-9 09:53:19 | 显示全部楼层
反爬人家是认真的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-10 15:50:09 | 显示全部楼层
小小小小的鱼丶 发表于 2019-4-8 22:30
有道加密了。我记得这一课的视频有弹幕教学的,弹幕里有解决办法,很早之前另外一个搬运小甲鱼视频的up主, ...

好的,有时间会去看看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-10 15:51:04 | 显示全部楼层
_谪仙 发表于 2019-4-8 22:55
url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"

把url换掉试下

关于删掉  "_o" 的方法试过了,不行 才在论坛里提问的....
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-10 15:52:52 | 显示全部楼层
风扫地 发表于 2019-4-8 23:54
我也遇到这个问题了:

关于这个问题,我后来想了想,小甲鱼的视频是几年前的,可能当时用这种方法可以获取,当时技术飞速发展的今天,这种方法可能被河蟹了.... 所以我也就没怎么再纠结了,等以后学完了,回头来看,可能就很容易的解决了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-10 15:53:35 | 显示全部楼层
cwhsmile 发表于 2019-4-9 09:53
反爬人家是认真的

关于这个问题,我后来想了想,小甲鱼的视频是几年前的,可能当时用这种方法可以获取,当时技术飞速发展的今天,这种方法可能被河蟹了.... 所以我也就没怎么再纠结了,等以后学完了,回头来看,可能就很容易的解决了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-10 16:08:23 | 显示全部楼层
风扫地 发表于 2019-4-9 09:02
把 _o去掉。"您的请求来源非法,商业用途使用请关注有道翻译API官方网站"

关于删掉  "_o" 的方法试过了,不行 才在论坛里提问的....
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-10 16:14:11 | 显示全部楼层
szk171848581 发表于 2019-4-10 15:53
关于这个问题,我后来想了想,小甲鱼的视频是几年前的,可能当时用这种方法可以获取,当时技术飞速发展的今天 ...

嗯嗯,是的 。
我这两天也再研究为啥requests.get返回的和审查元素看到的不一样,
一点一点的百度才知道有些内容是经过JavaScript渲染的,需要借助别的工具才能爬取到自己想要的内容。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-10 16:32:32 | 显示全部楼层
加密了,论坛里面有说的,你参考下这个帖子:有道爬虫
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-10 17:47:12 | 显示全部楼层
_谪仙 发表于 2019-4-8 22:55
url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"

把url换掉试下
  1. import requests,json
  2. from  urllib.parse import urlencode

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

  4. text = input("请输入要翻译的英文:")
  5. headers = {
  6.         "X-Requested-With": "XMLHttpRequest",
  7.         "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36",
  8.         "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
  9.                 "Referer":"http://fanyi.youdao.com/",
  10. }

  11. formdata = {'i': text,
  12.                         'from': 'AUTO',
  13.                         'to': 'AUTO',
  14.                         'smartresult': 'dict',
  15.                         'client': 'fanyideskweb',
  16.                         'salt': '1529504879909',
  17.                         'sign': '2e99f1f23b75300e3160607cdc8ac4c4',
  18.                         'doctype': 'json',
  19.                         'keyfrom': 'fanyi.web',        }

  20. data = urlencode(formdata)
  21. response = requests.post(url, data=data, headers=headers)
  22. content = response.text
  23. content = json.loads(content)
  24. translateResult = content.get('translateResult')[0][0].get('tgt')
  25. print('翻译后的字符:', translateResult)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-11 10:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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