我正在尝试让Scrapy 0.12更改蜘蛛中start_urls变量中不同网址的“最大深度”设置。
如果我正确理解文档,那么就没有办法了,因为DEPTH_LIMIT设置对整个框架来说都是全局的,并且没有“请求来自初始框架”的概念。
有没有办法规避这个?是否可以使用每个起始URL和不同的深度限制初始化相同蜘蛛的多个实例?
答案 0 :(得分:1)
对不起,看起来我从一开始就没有理解你的问题。纠正我的回答:
回复depth
中有meta
个关键字。您可以检查并采取适当的措施。
class MySpider(BaseSpider):
def make_requests_from_url(self, url):
return Request(url, dont_filter=True, meta={'start_url': url})
def parse(self, response):
if response.meta['start_url'] == '???' and response.meta['depth'] > 10:
# do something here for exceeding limit for this start url
else:
# find links and yield requests for them with passing the start url
yield Request(other_url, meta={'start_url': response.meta['start_url']})
http://doc.scrapy.org/en/0.12/topics/spiders.html#scrapy.spider.BaseSpider.make_requests_from_url