鱼C论坛

 找回密码
 立即注册
查看: 1401|回复: 7

[已解决]请问“论一只爬虫的自我修养2:实战”中,爬取的数据为什么不是字典而是整个网页

[复制链接]
发表于 2020-3-14 21:35:00 | 显示全部楼层 |阅读模式

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

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

x
代码如下
  1. import urllib.request
  2. import urllib.parse

  3. url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
  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']= '15841896797322'
  11. data['sign']= 'a8b0706f8a366ad3b1b156e451b7fe76'
  12. data['ts']= '1584189679732'
  13. data['bv']= 'a9c3483a52d7863608142cc3f302a0ba'
  14. data['doctype:']= 'json'
  15. data['version']= '2.1'
  16. data['keyfrom']= 'fanyi.web'
  17. data['action']= 'FY_BY_CLICKBUTTION'
  18. data=urllib.parse.urlencode(data).encode('utf-8')

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

  21. print(html)
复制代码


求各位解答
最佳答案
2020-3-14 22:30:47
我找到了你的错误了
data['doctype']= 'json'
你多打了一个 : 给个采纳吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-14 22:09:17 | 显示全部楼层
本帖最后由 TJBEST 于 2020-3-14 22:13 编辑

爬取什么得看对方服务器给你什么啊?你查查 返回的的 response.headers() 里面的 content-type是什么 好好研究一下。
爬虫就是根据他返回的数据 进行筛选 然后进一步爬取数据 或者储存数据。他返回的是网页也是可以爬数据的,具体返回的是什么,得看服务器啊
返回的可能是网页 、也可能是json 更有可能是 多媒体。而且 网站都有反爬虫机制,你获取数据后,最好看看对不对。
如果返回的网页 是诸如“错”,“无法访问”之类的字,证明你没爬到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-14 22:28:16 | 显示全部楼层
我给你 来一个 我写的吧 你看看 和你的区别 你返回的不是Json应该是post数据有问题
  1. import urllib.request
  2. import urllib.parse
  3. import json
  4. url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
  5. proxy_url = ['183.146.213.157:80','101.231.104.82','39.137.69.10:80','101.95.115.196:80']#代理列表
  6. index = 0
  7. while True:
  8.     inputStr = input('\n请输入你想要翻译的中文(输入q退出):\n')
  9.     while True:
  10.         try:
  11.             if inputStr == 'q':
  12.                 break
  13.             post = {'i':inputStr,'from': 'zh-CHS','to':' en','smartresult':' dict','client': 'fanyideskweb',
  14.         'salt': '15766316706921','sign': '226a73a4714da07f6fad23fa645c2240','ts': '1576631670692',
  15.         'bv': '5575008ba9785f184b106838a72d6536','doctype':'json','version': '2.1','keyfrom': 'fanyi.web',
  16.         'action': 'FY_BY_REALTlME'}
  17.             postRealData = urllib.parse.urlencode(post).encode('utf-8')

  18.             #绑定代理
  19.             proxy = urllib.request.ProxyHandler({'http':proxy_url[index]})#绑定代理网址的程序 协议:网址端口 字典
  20.             opener = urllib.request.build_opener(proxy)#理解为 代理服务可以运用
  21.             urllib.request.install_opener(opener)#默认的全局代理服务(其实可以定义多个代理,这个是不设置默认的)
  22.             
  23.                
  24.             req = urllib.request.Request(url,data = postRealData)

  25.             #opener没有添加报头的函数
  26.             req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36')#伪装浏览器访问
  27.             response = urllib.request.urlopen(req)
  28.             responseData = response.read().decode('utf-8')
  29.             jsonData = json.loads(responseData)
  30.             translateResult = jsonData['translateResult'][0][0]['tgt']
  31.             print('翻译的结果是' + translateResult)
  32.             break
  33.         except Exception:
  34.             index =index + 1
  35.             index = index % len(proxy_url)
  36.     index =index + 1
  37.     index = index % len(proxy_url)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-14 22:30:47 | 显示全部楼层    本楼为最佳答案   
我找到了你的错误了
data['doctype']= 'json'
你多打了一个 : 给个采纳吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-14 23:10:43 | 显示全部楼层
TJBEST 发表于 2020-3-14 22:30
我找到了你的错误了
data['doctype']= 'json'
你多打了一个 : 给个采纳吧

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

使用道具 举报

发表于 2020-7-3 15:35:03 | 显示全部楼层
怎么感觉不对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-3 15:35:35 | 显示全部楼层
import urllib.request
import urllib.parse


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

data={}
data['i']=            '你好'
data['from']=         'AUTO'
data['to']=           'AUTO'
data['smartresult']=  'dict'
data['client']=       'fanyideskweb'
data['salt']=         '15830270361564'
data['sign']=         '722c486628af34b85df217c4fe6b111a'
data['ts']=           '1583027036156'
data['bv']=           '0ed2e07b89acaa1301d499442c9fdf79'
data['doctypt']=      'json'
data['version']=      '2.1'
data['keyfrom']=      'fanyi.web'
data['action']=       'FY_BY_REALTlME'



print(data)

data=urllib.parse.urlencode(data).encode('utf-8')


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

print(html)


我这段代码 也是爬的网页。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-3 18:06:26 | 显示全部楼层
我错了,doctpye 打错了,所以 ,爬出全部网页的,可能是字典错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 01:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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