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