当回首遇上转身 发表于 2017-4-30 14:42:14

python爬虫代码问题

本帖最后由 当回首遇上转身 于 2017-4-30 14:48 编辑

操作系统:Windows 7      Python版本 3.5.2
求解两行选定代码应该怎么修改?

"""import urllib.request
import urllib.parse
import json

content = input("请输入需要翻译的内容:")

url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom=null'
data = {}
# data['i'] = 'I love FishC.com'
data['i'] = content
data['from'] = 'AUTO'
data['to'] = 'AUTO'
data['smartresult'] ='dict'
data['client'] = 'fanyideskweb'
data['salt'] = '1493538230701'
data['sign'] = '7b50be5ddda95bce3d4b7b9404647cec'
data['doctype'] = 'json'
data['version'] = '2.1'
data['keyfrom'] = 'fanyi.web'
data['action'] = 'FY_BY_CTRL_ENTER'
data['typoResult'] = 'true'
data = urllib.parse.urlencode(data).encode('utf-8')

response = urllib.request.urlopen(url,data)
html = response.read().decode('utf-8')

print(html)

"""
target = json.loads(html)
print("翻译结果:%s"%(target['translateResult']['tgt']))
"""

求解这两行代码如何修改?

data['salt'] = '1493538230701'
data['sign'] = '7b50be5ddda95bce3d4b7b9404647cec'

jerryxjr1220 发表于 2017-4-30 16:26:57

data['salt'] = '1493538230701'这个应该是个时间戳,
data['sign'] = '7b50be5ddda95bce3d4b7b9404647cec' 应该是根据时间戳+你要翻译的内容加密后生成的验证字段。
除非你知道网站的加密方法,不然基本上是破解不了的,所以你直接这样爬是爬不到的,只会返回给你一个错误代码。
解决办法有2个:
1. 同样是有道翻译,url和data用下面这个
    url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc'
    data = {
      "type" : "AUTO",
      "i" : sentence,
      "doctype" : "json",
      "xmlVersion" : "1.8",
      "keyfrom" : "fanyi.web",
      "ue" : "UTF-8",
      "action" : "FY_BY_CLICKBUTTON",
      "typoResult" : "true"
    }
这个是不需要验证字段的,所以可以直接爬。

2.如果你一定要爬你这个页面的话,那就用selenium+phantomjs模拟浏览器,也是可以爬到的,但是速度会比较慢一些。

请叫我学术帝 发表于 2017-4-30 16:31:52

我也碰到这个问题了前几天,应该是加密了。

当回首遇上转身 发表于 2017-4-30 16:51:05

jerryxjr1220 发表于 2017-4-30 16:26
data['salt'] = '1493538230701'这个应该是个时间戳,
data['sign'] = '7b50be5ddda95bce3d4b7b9404647c ...

谢谢大神解答

春风过江南 发表于 2017-5-3 16:50:51

本帖最后由 春风过江南 于 2017-5-3 16:52 编辑

jerryxjr1220 发表于 2017-4-30 16:26
data['salt'] = '1493538230701'这个应该是个时间戳,
data['sign'] = '7b50be5ddda95bce3d4b7b9404647c ...

请问大神:
        我写的代码可以英文翻译为中文,但中文翻译英文就变成乱码了,这是怎么回事?

jerryxjr1220 发表于 2017-5-3 17:48:06

春风过江南 发表于 2017-5-3 16:50
请问大神:
        我写的代码可以英文翻译为中文,但中文翻译英文就变成乱码了,这是怎么回事?

把你的代码和错误信息贴上来,不然怎么分析?

春风过江南 发表于 2017-5-4 09:17:42

春风过江南 发表于 2017-5-3 16:50
请问大神:
        我写的代码可以英文翻译为中文,但中文翻译英文就变成乱码了,这是怎么回事?

问题描述:
        我按照大神修改的data代码,重新运行了,英文可以翻译成中文,但中文翻译英文的时候报错了。
请大神帮帮我,谢谢!!!

春风过江南 发表于 2017-5-4 14:28:33

jerryxjr1220 发表于 2017-5-3 17:48
把你的代码和错误信息贴上来,不然怎么分析?

不用麻烦大神了,我找到问题所在了。
我把{data['ue'] = 'UTF-8'}中的“UTF-8”横杠中间加空格了,导致中文文无法转换成英文。
谢谢大神关注!

AIR信 发表于 2017-5-23 17:45:25

请问楼上大神,我的这个按照您说的改仍然报错和楼主一样,请问可以帮忙看一下吗?F:\daima.png

AIR信 发表于 2017-5-23 17:48:24

就是这个代码,第一次发图片不太会,不好意思

AIR信 发表于 2017-5-23 17:50:19

jerryxjr1220 发表于 2017-4-30 16:26
data['salt'] = '1493538230701'这个应该是个时间戳,
data['sign'] = '7b50be5ddda95bce3d4b7b9404647c ...

您好,我照您的改完仍然和楼主一样报错,可以帮忙看一下吗?

AIR信 发表于 2017-5-23 17:51:15

AIR信 发表于 2017-5-23 17:50
您好,我照您的改完仍然和楼主一样报错,可以帮忙看一下吗?

是因为有道的后台支持又有什么其他改变吗?

尊称邓天王 发表于 2017-7-13 12:36:37

jerryxjr1220 发表于 2017-4-30 16:26
data['salt'] = '1493538230701'这个应该是个时间戳,
data['sign'] = '7b50be5ddda95bce3d4b7b9404647c ...

你这个URL和data 是怎么来的 根据什么得到的

1304539791 发表于 2017-7-15 19:26:30

只要把07.url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom=null'中translate_o?后面的“_o”去掉就好了,其他比如时间戳什么的都不用改。其他的URL也是一样,去掉“_o”就好,无知小白纠结了一天摸索出的答案。
还有就是有人知道怎么获得最佳答案中提到的URL吗,我发现这个问题其实和data没有关系,都是URL的锅。

cjb2008508 发表于 2017-7-18 15:00:56

1304539791 发表于 2017-7-15 19:26
只要把07.url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom=nu ...

我也发现了。去掉_o 就可以了,小甲鱼老师视频讲解时候的URL有道是没有_o的,不知道是不是有道的一个模糊地址的方式,哪位大神可以解释一下吗?

1304539791 发表于 2017-7-20 00:09:18

{:5_110:}{:5_110:}{:5_110:}{:5_110:}{:5_110:}可是你知道怎么获得最佳答案中提到的URL吗?我下了几个版本的Google浏览器,也不能得到视频中的URL。

连清 发表于 2017-8-10 21:47:44

多谢大神们解答{:10_254:}

python170816 发表于 2017-8-17 07:52:03

真不错,去了url的_o解决问题

holistic杀手 发表于 2017-9-1 22:49:06

没错,是url的锅,那么问题来了,最佳答案根据时间戳来生成验证码加密是什么意思

骚强么么哒 发表于 2017-9-3 00:54:29

1304539791 发表于 2017-7-15 19:26
只要把07.url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom=nu ...

真的是这个问题。这么发现的?????为什么和_o有关系???
页: [1] 2 3 4
查看完整版本: python爬虫代码问题