鱼C论坛

 找回密码
 立即注册
查看: 1965|回复: 12

[已解决]python2爬虫问题

[复制链接]
发表于 2017-7-23 12:06:15 | 显示全部楼层 |阅读模式

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

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

x
我用的Python2编的有道词典的翻译的一个程序,但显示了错误,请高人指教
  1. # coding=utf-8
  2. import urllib2
  3. from urlparse import urlparse
  4. import json
  5. content = raw_input("请输入需要翻译的内容:")
  6. url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom=dict2.top'
  7. data = {}
  8. data['i'] = content
  9. data['type'] = 'AUTO'
  10. data['smartresult'] = 'dict'
  11. data['client'] = 'fanyideskweb'
  12. data['salt'] = '1500779742675'
  13. data['sign'] = '0a4aca0a48f2f934c2f2133a05b617dc'
  14. data['doctype'] = 'json'
  15. data['version'] = '2.1'
  16. data['keyfrom'] = 'fanyi.web'
  17. data['action'] = 'FY_BY_CL1CKBUTTON'
  18. data['typoResult'] = 'true'
  19. urlparse(data).encode('utf-8')
  20. response = urllib2.urlopen(url,data)
  21. html = response.read().decode('utf-8')
  22. target = json.loads(html)
  23. print("翻译结果:%s" % (target['translateResult'][0][0]['tgt']))
复制代码


Traceback (most recent call last):
  File "C:/Users/Dell/Desktop/PYTHON/&#65533;&#65533;&#65533;&#65533;/&#65533;е&#65533;&#65533;&#693;&#19949;&#65533;&#65533;&#65533;&#305;&#65533;.py", line 19, in <module>
    urlparse(data).encode('utf-8')
  File "C:\Python27\lib\urlparse.py", line 134, in urlparse
    tuple = urlsplit(url, scheme, allow_fragments)
  File "C:\Python27\lib\urlparse.py", line 167, in urlsplit
    cached = _parse_cache.get(key, None)
TypeError: unhashable type: 'dict'
最佳答案
2017-7-23 18:38:48
  1. import urllib.request
  2. import urllib.parse
  3. url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom=https://www.baidu.com/link'
  4. data = {}

  5. data['i'] = 'I love FishC.com'
  6. data['from'] = 'AUTO'
  7. data['to'] = 'AUTO'
  8. data['smartresult'] = 'dict'
  9. data['client'] = 'fanyideskweb'
  10. data['salt'] = '1498443416905'
  11. data['sign'] = '7f1f46783b69d95236192822a11b98e2'
  12. data['doctype'] = 'json'
  13. data['version'] = '2.1'
  14. data['keyfrom'] = 'fanyi.web'
  15. data['action'] = 'FY_BY_CLICKBUTTON'
  16. data['typoResult'] = 'TRUE'

  17. data = urllib.parse.urlencode(data).encode('utf-8')
  18. response = urllib.request.urlopen(url,data)

  19. html = response.read().decode('utf-8')
  20. print(html)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-23 13:00:16 | 显示全部楼层
大神求求你换Python3吧!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-23 13:01:40 | 显示全部楼层
那个错误码里怎么会有解码错误啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-23 13:34:12 | 显示全部楼层
新手·ing 发表于 2017-7-23 13:00
大神求求你换Python3吧!

我换了Python3又试了一次显示的是KeyError: 'translateResult'
  1. import urllib.request
  2. import urllib.parse
  3. import json
  4. content = input("请输入需要翻译的内容:")

  5. url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom=dict2.top'
  6. data = {}
  7. data['i'] = content
  8. data['type'] = 'AUTO'
  9. data['smartresult'] = 'dict'
  10. data['client'] = 'fanyideskweb'
  11. data['salt'] = '1500779742675'
  12. data['sign'] = '0a4aca0a48f2f934c2f2133a05b617dc'
  13. data['doctype'] = 'json'
  14. data['version'] = '2.1'
  15. data['keyfrom'] = 'fanyi.web'
  16. data['action'] = 'FY_BY_CL1CKBUTTON'
  17. data['typoResult'] = 'true'
  18. data = urllib.parse.urlencode(data).encode('utf-8')
  19. response = urllib.request.urlopen(url,data)
  20. html = response.read().decode('utf-8')

  21. target = json.loads(html)
  22. print("翻译结果:%s" % (target['translateResult'][0][0]['tgt']))
复制代码

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

使用道具 举报

发表于 2017-7-23 18:36:46 | 显示全部楼层
夜深听雨 发表于 2017-7-23 13:34
我换了Python3又试了一次显示的是KeyError: 'translateResult'

不知道为什么错了

那就对了,,有道网改了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-23 18:38:48 | 显示全部楼层    本楼为最佳答案   
  1. import urllib.request
  2. import urllib.parse
  3. url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom=https://www.baidu.com/link'
  4. data = {}

  5. data['i'] = 'I love FishC.com'
  6. data['from'] = 'AUTO'
  7. data['to'] = 'AUTO'
  8. data['smartresult'] = 'dict'
  9. data['client'] = 'fanyideskweb'
  10. data['salt'] = '1498443416905'
  11. data['sign'] = '7f1f46783b69d95236192822a11b98e2'
  12. data['doctype'] = 'json'
  13. data['version'] = '2.1'
  14. data['keyfrom'] = 'fanyi.web'
  15. data['action'] = 'FY_BY_CLICKBUTTON'
  16. data['typoResult'] = 'TRUE'

  17. data = urllib.parse.urlencode(data).encode('utf-8')
  18. response = urllib.request.urlopen(url,data)

  19. html = response.read().decode('utf-8')
  20. print(html)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-23 20:58:14 | 显示全部楼层
新手·ing 发表于 2017-7-23 18:36
那就对了,,有道网改了

你的意思是有道网把我屏蔽了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-23 21:04:54 | 显示全部楼层
新手·ing 发表于 2017-7-23 18:36
那就对了,,有道网改了

确实好像当我变了你的代码里的i love fishc.com之后显示了 error code:50,这是不是指一个代码只能匹配到那一组英文,而当我改变了我要翻译的文字后就不行了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-23 21:28:27 | 显示全部楼层
夜深听雨 发表于 2017-7-23 21:04
确实好像当我变了你的代码里的i love fishc.com之后显示了 error code:50,这是不是指一个代码只能匹配到 ...

不是把你屏蔽了,,,是网站改了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-24 09:17:55 | 显示全部楼层
新手·ing 发表于 2017-7-23 21:28
不是把你屏蔽了,,,是网站改了

那为什么小甲鱼老师的程序可以翻译任何单词呢,网站没有改吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-24 09:18:46 | 显示全部楼层
新手·ing 发表于 2017-7-23 21:28
不是把你屏蔽了,,,是网站改了

那为什么小甲鱼老师的程序可以翻译任何单词呢,网站没有改吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-24 10:46:11 | 显示全部楼层
夜深听雨 发表于 2017-7-24 09:17
那为什么小甲鱼老师的程序可以翻译任何单词呢,网站没有改吗?

他那个时候还没有改,现在改了,你去论坛上搜一下,有改过的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-24 11:27:44 | 显示全部楼层
新手·ing 发表于 2017-7-24 10:46
他那个时候还没有改,现在改了,你去论坛上搜一下,有改过的

恩恩看到了,小甲鱼老师的老程序是可以用的,另外我也发现了我的问题出在有道词典salt和sign会变化,只不过为什么老版本可以呢?后来我爬了金山翻译,因为这个翻译data里没有salt和sign我可以随便翻译了。现在只是比较好奇为什么小甲鱼老师的程序能避开那些变化的像sign一样的东西
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 00:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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