爬行不同深度的多个起始网址

时间:2011-10-23 12:26:54

标签: python scrapy

我正在尝试让Scrapy 0.12更改蜘蛛中start_urls变量中不同网址的“最大深度”设置。

如果我正确理解文档,那么就没有办法了,因为DEPTH_LIMIT设置对整个框架来说都是全局的,并且没有“请求来自初始框架”的概念。

有没有办法规避这个?是否可以使用每个起始URL和不同的深度限制初始化相同蜘蛛的多个实例?

1 个答案:

答案 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