鱼C论坛

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

[已解决]54课爬虫代码错误有问题

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

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

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

x
本帖最后由 马云 于 2017-7-25 15:59 编辑
  1. import urllib.request
  2. import urllib.parse
  3. import json
  4. neirong = input('你要翻译啥')
  5. url ='http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom=dict2.top'

  6. date ={}
  7. date['i']=neirong
  8. date['from']='AUTO'
  9. date['to']='AUTO'
  10. date['smartresult']='dict'
  11. date['client'] = 'fanyideskweb'
  12. date['salt']='1500966548163'
  13. date['sign']='3f292d40517abe5030b7bf188958ccad'
  14. date['doctype']='json'
  15. date['version']='2.1'
  16. date['keyfrom'] ='fanyi.web'
  17. date['action']='FY_BY_CL1CKBUTTON'
  18. date['typoResult']='true'
  19. date = urllib.parse.urlencode(date).encode('utf-8')


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

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


上图是我仿照老师写的代码,但是问题是最后还是会报错
  1. Traceback (most recent call last):
  2.   File "C:/Users/Administrator/Desktop/text.py", line 27, in <module>
  3.     print('翻译结果:%s'%(target['translateResult'][0][0]['tgt']))
  4. KeyError: 'translateResult'
复制代码

这个是错误报告,不是很懂哪里错了,请指教啊
最佳答案
2017-7-25 16:11:30
不是代码问题,是有道改过网页代码传的参数了。
新的代码可以参考http://bbs.fishc.com/thread-91365-1-1.html  大神写的
我在大神基础上稍作修改
  1. import urllib.request
  2. import urllib.parse
  3. import time
  4. import random
  5. import hashlib
  6. import json

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

  8. def open_url(url,word_d):
  9.     u='fanyideskweb'
  10.     d=word_d
  11.     f=str(int(time.time()*1000))
  12.     c="rY0D^0'nM0}g5Mm1z%1G4"
  13.     g=hashlib.md5()
  14.     g.update((u + d + f + c).encode('utf-8'))
  15.     head={}
  16.     head['User-Agent']='Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:54.0) Gecko/20100101 Firefox/54.0'
  17.     head['Host']='fanyi.youdao.com'
  18.     head['Referer']='http://fanyi.youdao.com/'
  19.     data={}
  20.     data['i']=d
  21.     data['from']='AUTO'
  22.     data['to']='AUTO'
  23.     data['smartresult']='dict'
  24.     data['client']=u
  25.     data['salt']=f
  26.     data['sign']=g.hexdigest()
  27.     data['doctype']='json'
  28.     data['version']='2.1'
  29.     data['keyfrom']='fanyi.web'
  30.     data['action']='FY_BY_CL1CKBUTTON'
  31.     data['typoResult']='true'
  32.     data=urllib.parse.urlencode(data).encode('utf-8')

  33.     req=urllib.request.Request(url,data,head)
  34.     response=urllib.request.urlopen(req)
  35.     html=response.read().decode('utf-8')
  36.     target=json.loads(html)
  37.     #print(html)
  38.     print('翻译结果: %s ' % (target['translateResult'][0][0]['tgt']))

  39. def loops(url):
  40.     while True:
  41.         d=input('请输入需要翻译的单词或句子(‘99’表示退出):')
  42.         if d == '99':
  43.             break
  44.         else:
  45.             open_url(url,d)
  46.             
  47. if __name__=='__main__':
  48.     url='http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom=null'
  49.     loops(url)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-25 16:11:30 | 显示全部楼层    本楼为最佳答案   
不是代码问题,是有道改过网页代码传的参数了。
新的代码可以参考http://bbs.fishc.com/thread-91365-1-1.html  大神写的
我在大神基础上稍作修改
  1. import urllib.request
  2. import urllib.parse
  3. import time
  4. import random
  5. import hashlib
  6. import json

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

  8. def open_url(url,word_d):
  9.     u='fanyideskweb'
  10.     d=word_d
  11.     f=str(int(time.time()*1000))
  12.     c="rY0D^0'nM0}g5Mm1z%1G4"
  13.     g=hashlib.md5()
  14.     g.update((u + d + f + c).encode('utf-8'))
  15.     head={}
  16.     head['User-Agent']='Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:54.0) Gecko/20100101 Firefox/54.0'
  17.     head['Host']='fanyi.youdao.com'
  18.     head['Referer']='http://fanyi.youdao.com/'
  19.     data={}
  20.     data['i']=d
  21.     data['from']='AUTO'
  22.     data['to']='AUTO'
  23.     data['smartresult']='dict'
  24.     data['client']=u
  25.     data['salt']=f
  26.     data['sign']=g.hexdigest()
  27.     data['doctype']='json'
  28.     data['version']='2.1'
  29.     data['keyfrom']='fanyi.web'
  30.     data['action']='FY_BY_CL1CKBUTTON'
  31.     data['typoResult']='true'
  32.     data=urllib.parse.urlencode(data).encode('utf-8')

  33.     req=urllib.request.Request(url,data,head)
  34.     response=urllib.request.urlopen(req)
  35.     html=response.read().decode('utf-8')
  36.     target=json.loads(html)
  37.     #print(html)
  38.     print('翻译结果: %s ' % (target['translateResult'][0][0]['tgt']))

  39. def loops(url):
  40.     while True:
  41.         d=input('请输入需要翻译的单词或句子(‘99’表示退出):')
  42.         if d == '99':
  43.             break
  44.         else:
  45.             open_url(url,d)
  46.             
  47. if __name__=='__main__':
  48.     url='http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom=null'
  49.     loops(url)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-25 16:45:35 | 显示全部楼层
请问楼主这个爬虫教程是哪里看的呀,没找到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-25 19:32:01 | 显示全部楼层
a10767891 发表于 2017-7-25 16:45
请问楼主这个爬虫教程是哪里看的呀,没找到

http://blog.fishc.com这个里面可以下载
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-25 19:51:30 | 显示全部楼层
flyblood 发表于 2017-7-25 16:11
不是代码问题,是有道改过网页代码传的参数了。
新的代码可以参考http://bbs.fishc.com/thread-91365-1-1. ...

萌新表示改了后就看不懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-25 21:41:57 | 显示全部楼层
马云 发表于 2017-7-25 19:32
http://blog.fishc.com这个里面可以下载

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 12:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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