找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 4747|回复: 4

[已解决] 新人python爬虫问题

1

主题

3

帖子

3

积分

贫民

积分
3
maodexie 发表于 2018-3-18 00:56:40 | 显示全部楼层 |阅读模式
  1. from urllib import request
  2. from urllib import parse
  3. import json

  4. if __name__ == '__main__':
  5. request_url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"
  6.     FromData = {}
  7.     FromData['i'] = 'jack'
  8.     FromData['from'] = 'AUTO'
  9.     FromData['to'] = 'AUTO'
  10.     FromData['smartresult'] = 'dict'
  11.     FromData['client'] = 'fanyideskweb'
  12.     FromData['salt'] = '1521303528591'
  13.     FromData['sign'] = '2360af17a6dce9040ad31288baf111ca'
  14.     FromData['doctype'] = 'json'
  15.     FromData['version'] = '2.1'
  16.     FromData['keyfrom'] = 'fanyi.web'
  17.     FromData['action'] = 'FY_BY_REALTIME'
  18.     FromData['typoResult'] = 'false'
  19.     data = parse.urlencode(FromData).encode('utf-8')
  20.     response = request.urlopen(request_url,data)
  21.     html = response.read().decode('utf-8')
  22.     translate_result = json.loads(html)
  23. #    translate_result = translate_result['translateResult'][0][0]['tgt']
  24.     #打印翻译信息
  25. #    print("翻译的结果是:%s" % translate_result)
复制代码

代码如上,是按照教程里对有道翻译进行爬取结果,html中的请求返回的是error

%QKWH[360S`KQZ7XTLCI~R4.png


求大神解答!
回复

使用道具 举报

0

主题

20

帖子

20

积分

贫民

积分
20
sss123 发表于 2018-3-18 19:05:05 | 显示全部楼层
换个教程吧,你这教程怎么教的?  formdata 不就是个字典吗? 字典你有必要这样 key1 value1   key2 value2  key3 value3   写下去吗? 直接一个formdata ={k:v,k:v,k:v,} 逗号分隔啊,,, 再就是 网页请求不只是有get!!!
回复 支持 反对

使用道具 举报

50

主题

1057

帖子

1108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1108

活跃会员热心会员最佳导师默默耕耘突出贡献优秀版主荣誉管理论坛元老

blueelwang 发表于 2018-3-20 12:33:19 | 显示全部楼层
这个有防抓取验证, 经过测试,我发现在现在基础上, 设置header信息的Referer为http://fanyi.youdao.com/即可
回复 支持 反对

使用道具 举报

1

主题

3

帖子

3

积分

贫民

积分
3
maodexie  楼主| 发表于 2018-3-20 20:07:59 | 显示全部楼层
blueelwang 发表于 2018-3-20 12:33
这个有防抓取验证, 经过测试,我发现在现在基础上, 设置header信息的Referer为http://fanyi.youdao.com/ ...

谢谢,header那部分还没有看,不是很清楚你说的,后面看了应该会知道。问题的解决在作者的评论下方看到了, request_url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule",改为 request_url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule",去掉了"translate_o"中的"_o"就可以了,原因好像跟你说的防抓取有关。
再次感谢
回复 支持 反对

使用道具 举报

1

主题

3

帖子

3

积分

贫民

积分
3
maodexie  楼主| 发表于 2018-3-20 20:09:09 | 显示全部楼层
sss123 发表于 2018-3-18 19:05
换个教程吧,你这教程怎么教的?  formdata 不就是个字典吗? 字典你有必要这样 key1 value1   key2 value2 ...

但是那样写也是可以的,可能习惯不是很好,谢谢指出。
回复 支持 反对

使用道具 举报

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

本版积分规则

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