我正在使用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重试这些失败的网址,而不是简单地丢弃这些项目。我怎样才能做到这一点?
答案 0 :(得分:0)
您无法在管道中重试项目。
您应该在Spider中写一张支票,然后再次yield Request(url, dont_filter=True)
使用相同的网址
def parse(self, response):
if item.has_key('error'):
raise DropItem("Error capturing item %s" % item)
yield Request(response.url, dont_filter=True)