scrapy:如何捕获意外的返回响应的部分html正文和状态200的情况

时间:2014-07-09 11:12:39

标签: scrapy

在我抓取过程中,有些页面会返回部分html正文和状态200的响应,在我将响应正文与我在浏览器中打开的响应正文进行比较后,前者错过了一些内容。 如何在蜘蛛或下载中间件中捕获这个意外的部分响应主体案例?

下面是关于日志示例:

2014-01-23 16:31:53 + 0100 [filmweb_multi] DEBUG:Crawled(408)http://www.filmweb.pl/film/Labirynt-2013-507169/photos> (引用者:http://www.filmweb.pl/film/Labirynt-2013-507169)[' 部分']

2 个答案:

答案 0 :(得分:0)

部分内容。 其余内容由 Javacript AJAX调用 动态加载。

要调试作为特定请求的响应发送的内容,请使用Scrapy的 open_in_browser() 功能。

How to extract dynamic content from websites that are using AJAX ?上有另一个帖子。请参阅此解决方法。

答案 1 :(得分:0)

在日志中查看['partial']表示响应缺少某些标头;有关导致partial标记的更多详细信息,请参阅my answer here

要捕获这些回复,您只需查看response flags即可。例如,如果您使用Request(url=url, callback=self.parse)创建了请求,则会在回调中执行以下操作:

def parse(self, response):
    if 'partial' in response.flags:
        # Do something with the response
        pass