2015-11-03 353 views

回答

1

当你提出要求,你发现它的回调方法,回调应该是这样的:

def parse_method(self, response): 

那里你可以检查响应头与response.headers

4

要展开什么eLRuLL写道: 。

ResponseRequest对象将通过.headers属性提供其标题。

这两个对象的标题都通过Downloader和引擎之间的中间件进行修改(请参阅Scrapy Architecture)。如果您创建了一个新的对象,它将不会有任何标题,直到它通过指定它们的中间件。

要查看请求对象,因为它将被发送出去,所以您需要创建一个中间件,使它比其他任何头部更改的中间件更接近下载器,并在此时检查request.headers属性。

或者,您可以通过查看response.request.headers来查看返回Response到Spider的请求的标题。这可能不是您发送的Request对象,但是返回的对象(例如,重定向/重试会导致最初调度的对象Request不同于response.request中的对象Request)。当然,这需要一个Response对象返回给蜘蛛,所以它不会对任何没有生成响应的Request(例如DNS查找错误)或任何被中间件忽略或丢弃的Response (例如,HTTP状态400)。