如何阻止蜘蛛管道?

时间:2013-07-15 04:23:26

标签: python scrapy

@Sjaak Trekhaak在这里有'hack'How do I stop all spiders and the engine immediately after a condition in a pipeline is met?,它可以通过在管道中设置一个标志来阻止蜘蛛,然后在解析器方法中调用CloseSpider。但是我在管道中有以下代码(其中pdate和lastseen是明确定义的日期时间):

class StopSpiderPipeline(object):
    def process_item(self, item, spider):                                       
        if pdate < lastseen:
            spider.close_down = True 

和蜘蛛

def parse_item(self, response):                                             
    if self.close_down:                                                     
        raise CloseSpider(reason='Already scraped')     

我收到错误exceptions.AttributeError: 'SyncSpider' object has no attribute 'close_down',我哪里错了?这个问题实际上是由@anicake提出的,但没有得到回应。 谢谢,

1 个答案:

答案 0 :(得分:1)

您的蜘蛛close_down属性是否已创建?因为它看起来没有。

尝试将支票更改为if "close_down" in self.__dict__:或在您的蜘蛛self.close_down = False方法中添加__init__()