说明性场景:Scrapy蜘蛛用于从各种餐馆网站的start_urls
列表中抓取餐馆菜单。一旦找到每个餐馆的菜单,就不再需要继续抓取该特定的餐馆网站。蜘蛛应该(理想情况下)中止start_url
的队列并继续前往下一家餐馆。
一旦满足停止条件,是否有办法阻止Scrapy对每个start_url *的其余请求队列进行爬行?我不认为CloseSpider异常是合适的,因为我不想停止整个蜘蛛,只是当前start_url
的队列,然后继续前进到下一个start_url
。
答案 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
列表。