Scrapy:如何获取 response.status=302 页面的内容?

Scrapy: how can I get the content of pages whose response.status=302?

我在抓取时得到如下日志:

DEBUG: Crawled (302) <GET http://fuyuanxincun.fang.com/xiangqing/> (referer: http://esf.hz.fang.com/housing/151__1_0_0_0_2_0_0/)
DEBUG: Scraped from <302 http://fuyuanxincun.fang.com/xiangqing/>

但它实际上returns什么都没有。 我如何处理这些状态为 302 的响应?

如有任何帮助,我们将不胜感激!

HTTP 状态 302 表示暂时移动。当我向 url http://fuyuanxincun.fang.com/xiangqing/ 发出 HTTP GET 请求时,它向我显示 HTTP 200 状态。服务器在发送 302 状态代码后不会发送任何内容是很常见的(尽管从技术上讲,在 302 之后发送数据是可能的)。

您获得 HTTP 302 状态的原因可能是以下之一:

  1. 当存在特定引用者(例如:http://esf.hz.fang.com/housing/151__1_0_0_0_2_0_0/)时,网站不会提供其内容。
  2. 您没有发送服务器想要查看的 HTTP header。比如喜欢某某User-Agent。该网站可以通过发送 HTTP 302 状态而不是 HTTP 200 状态来决定拒绝没有特定 header 的请求。
  3. 您尝试从中发送请求的特定 IP-address 已被您尝试收集的网站排除。

我会推荐给:

  1. 使请求看起来像 "real" 浏览器请求(通信类似 headers)。
  2. 尝试从另一个IP-address发送请求。
  3. 尝试发送带有(随机)User-Agent 的请求。

我在 UTC 时间 07:30:29 2015 年 5 月 13 日,星期三,网站的行为可能会在您和我的请求之间更改。

它还有助于 post 完整的 RAW HTTP 请求和响应。