Scrapy停止条件

时间:2014-01-31 21:07:52

标签: scrapy

说明性场景:Scrapy蜘蛛用于从各种餐馆网站的start_urls列表中抓取餐馆菜单。一旦找到每个餐馆的菜单,就不再需要继续抓取该特定的餐馆网站。蜘蛛应该(理想情况下)中止start_url的队列并继续前往下一家餐馆。

一旦满足停止条件,是否有办法阻止Scrapy对每个start_url *的其余请求队列进行爬行?我不认为CloseSpider异常是合适的,因为我不想停止整个蜘蛛,只是当前start_url的队列,然后继续前进到下一个start_url

1 个答案:

答案 0 :(得分:1)

不要使用scrapy规则。 所有你需要的东西:

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_domains列表。