首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何强制scrapy-splash重试失败的项目?

如何强制scrapy-splash重试失败的项目?
EN

Stack Overflow用户
提问于 2017-03-01 05:52:16
回答 1查看 591关注 0票数 0

我使用scrapy splash从Javascript驱动的IFRAMEd页面中提取信息。有时,我的splash Javascript函数会因为某些浏览器条件而失败,并返回一条错误消息(如{"error": "NotSupportedError: DOM Exception 9"})。

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

代码语言:javascript
复制
class NewspaperLayoutPipeline(object):
    def process_item(self, item, spider):
        if item.has_key('error'):
            raise DropItem("Error capturing item %s" % item)
            ...

不幸的是,我的错误率大约是40%。因此,我想让scrapy-splash重试这些失败的urls,而不是简单地删除项目。我该怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2017-03-01 18:24:57

不能在Pipeline中重试项目。

你应该在你的爬虫中写一个检查,然后再次yield Request(url, dont_filter=True)相同的网址。

代码语言:javascript
复制
def parse(self, response):
    if item.has_key('error'):
        raise DropItem("Error capturing item %s" % item)
        yield Request(response.url, dont_filter=True)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42519442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档