Сканирование нескольких стартовых URL с различной глубиной - PullRequest
1 голос
/ 23 октября 2011

Я пытаюсь заставить Scrapy 0.12 изменить настройку «максимальной глубины» для другого URL-адреса в переменной start_urls в пауке.

Если я правильно понимаю документацию, нет никакого способа, потому что параметр DEPTH_LIMITглобальный для всей платформы, и нет понятия «запросы, исходящие от первоначального».

Есть ли способ обойти это?Возможно ли иметь несколько экземпляров одного и того же паука, инициализированного с каждым начальным URL и разными пределами глубины?

1 Ответ

1 голос
/ 24 октября 2011

Извините, похоже, я не правильно поняла ваш вопрос с самого начала. Исправляя мой ответ:

Ответы имеют 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...