Scrapy 刮擦停止条件

Scrapy 刮擦停止条件,scrapy,Scrapy,说明性场景:创建了一个Scrapy spider,用于从各种餐厅网站的start\u URL列表中刮取餐厅菜单。一旦找到每个餐厅的菜单,就不再需要继续在特定的餐厅网站上爬行。爬行器(理想情况下)应该中止该start\u url的队列,然后移动到下一家餐厅 一旦满足停止条件,是否有方法阻止Scrapy对其请求队列的剩余部分*每个开始url*进行爬网?我不认为CloseSpider异常是合适的,因为我不想停止整个spider,只想停止当前start\u url的队列,然后转到下一个start\u u

说明性场景:创建了一个Scrapy spider,用于从各种餐厅网站的
start\u URL
列表中刮取餐厅菜单。一旦找到每个餐厅的菜单,就不再需要继续在特定的餐厅网站上爬行。爬行器(理想情况下)应该中止该
start\u url
的队列,然后移动到下一家餐厅

一旦满足停止条件,是否有方法阻止Scrapy对其请求队列的剩余部分*每个开始url*进行爬网?我不认为CloseSpider异常是合适的,因为我不想停止整个spider,只想停止当前
start\u url
的队列,然后转到下一个
start\u url

不要使用零碎的规则。 您所需要的一切:

start_urls = [
        'http://url1.com', 'http://url2.com', ...
    ]

def start_requests(self):
        for url in self.start_urls:
            yield Request(url, self.parse_url)

def parse_url(self, response):
        hxs = Selector(response)
        item = YourItem()
        # process data 
        return item

不要忘记将所有域添加到
allowed\u domains
列表中。

没有这样的选项。不过,您可以为每个起始url保留一个请求队列,并继续生成请求,直到找到菜单为止。