0

我正在使用 scrapy-splash 从 Javascript 驱动的 IFRAMEd HTML 页面中提取信息。有时,我的启动 Javascript 函数由于某些浏览器条件而失败,并返回类似{"error": "NotSupportedError: DOM Exception 9"}) 的错误消息。

在我的项目管道中,我删除了这些项目以保持我的结果干净:

class NewspaperLayoutPipeline(object):
    def process_item(self, item, spider):
        if item.has_key('error'):
            raise DropItem("Error capturing item %s" % item)
            ...

不幸的是,我的错误项目率约为 40%。所以我想让scrapy-splash重试这些失败的url,而不是简单地删除项目。我怎样才能做到这一点?

4

1 回答 1

0

您无法重试管道中的项目。

您应该在您的 Spider 中写一个检查,然后yield Request(url, dont_filter=True)再次使用相同的 URL

def parse(self, response):
    if item.has_key('error'):
        raise DropItem("Error capturing item %s" % item)
        yield Request(response.url, dont_filter=True)
于 2017-03-01T10:24:57.350 回答