3

@Sjaak Trekhaak 在这里有一个“hack”如何在满足管道中的条件后立即停止所有蜘蛛和引擎?这可以通过在管道中设置一个标志来潜在地停止蜘蛛,然后在解析器方法中调用 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 提出的,但没有得到回应。谢谢,

4

1 回答 1

1

你的蜘蛛close_down属性创建了吗?因为看起来不像。

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

于 2013-07-15T13:30:38.963 回答