html response 的status是200,但是为啥返回的response不是完整的呢?

问心2011 2015-07-01 11:17:45

我在爬虫的时候,有时候会碰到这个问题,明明status是ok的,但是返回的结果却是不完整的。
特别是碰到爬取下一页链接的时候,常常就因为这个问题导致后面几页的网页不能跟进,损失了很多数据。

求大神赐教啊~~~
...全文
8811 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
200 = 服务器端对你的请求正常响应,准备开始输出数据。 数据丢失需要自己去分析的,服务端返回到结束这个过程可能出现的问题太多了。
maya8maya85 2018-05-16
  • 打赏
  • 举报
回复
请问你教决了吧,我也遇到这样的问题,状态都是200,但返回的数据如下图,最大的问题是,它不是经常性的,是偶尔来一两个这样的,好难处理
Poopaye 2015-09-09
  • 打赏
  • 举报
回复
楼主你没见过网页开了一半卡住了吗?
xiyanglvbb 2015-09-09
  • 打赏
  • 举报
回复
换个useragent试试;
baidu_31157655 2015-09-08
  • 打赏
  • 举报
回复
我正在爬http://news.sohu.com/scroll/这个网页,不知道为什么这个网页在scrapy shell调试时view repsonse 出来的是空白网页,所以我的所有xpath都匹配不出内容!和浏览器看到的不一样! 我想是不是跟你遇到的问题一样?请问你有答案了么?
问心2011 2015-07-02
  • 打赏
  • 举报
回复
引用 3 楼 starfd 的回复:
200只是代表Http请求是正确的响应了,然后你所谓的结果不完整是什么意思,是跟打开后浏览到的不一样?那这要看是不是load后有js加载数据
我查看了一下body,说是Your browse does not support frame 我用了下面这些useragent,看不出问题在哪里。。。 "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.60 Safari/537.17", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1309.0 Safari/537.17", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.2; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)", "Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)", "Mozilla/5.0 (Windows; U; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)", "Mozilla/6.0 (Windows NT 6.2; WOW64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1", "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:15.0) Gecko/20100101 Firefox/15.0.1'", "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:15.0) Gecko/20120910144328 Firefox/15.0.2", "Mozilla/5.0 (Windows; U; Windows NT 6.1; rv:2.2) Gecko/20110201", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a3pre) Gecko/20070330", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.13; ) Gecko/20101203", "Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14", "Opera/9.80 (X11; Linux x86_64; U; fr) Presto/2.9.168 Version/11.50", "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; de) Presto/2.9.168 Version/11.52", "Mozilla/5.0 (Windows; U; Win 9x 4.90; SG; rv:1.9.2.4) Gecko/20101104 Netscape/9.1.0285", "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.7pre) Gecko/20070815 Firefox/2.0.0.6 Navigator/9.0b3", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.12) Gecko/20080219 Firefox/2.0.0.12 Navigator/9.0.0.6",
  • 打赏
  • 举报
回复
你先用http fiddler抓包跟一下rquest和response
  • 打赏
  • 举报
回复
200只是代表Http请求是正确的响应了,然后你所谓的结果不完整是什么意思,是跟打开后浏览到的不一样?那这要看是不是load后有js加载数据
  • 打赏
  • 举报
回复
另外,就算是content length比你收到的body中的字节数多很多,服务器端对于本次连接“关闭了”,那么状态200也是对的。规范就是如此,200就是这个意思。它跟你收到的消息体中你逻辑上判断的“是否完整”性是没有关系的。
  • 打赏
  • 举报
回复
200跟 content length没有关系。你如果看到content length比你收到的body的字节数多很多,这才算是“不完整”。
问心2011 2015-07-01
  • 打赏
  • 举报
回复
谢谢! 应该没有js加载数据。 不好意思,我这里没有说明白,我说的不完整主要是下面两点: 1.response body里面几乎没有内容 2.我用xpath提取response里的数据时,有时候会报'Response' object has no attribute 'xpath'这个错 上面两个问题并不是一直出现的,时有时无。 我用了一批网上的代理ip,不是太稳定,可能跟这个有关。但是一般有问题会都抛错,这种status ok的我就不知道怎么处理了

110,553

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧