2015-08-31 4 views
0

Я использую Scrapy, чтобы извлечь информацию из website. Это код паука (частичный):Правило для разбивки на страницы в Scrapy

class bsSpider(CrawlSpider): 
    name = "bsSpider" 
    def __init__(self, *args, **kwargs): 
     super(bsSpider, self).__init__(*args, **kwargs) 
     self.start_urls = [kwargs.get('start_url')] 

    rules = (Rule (LinkExtractor(allow=('.*\?id1=.*',),restrict_xpaths=('//a[@class="prevNext next"]',)), callback="parse_items", follow= True),) 

Основываясь на приведенном выше правиле, следуйте следующим страницам. Теперь, если пользователь хочет предоставить другой start_url для очистки, как динамически обновить приведенное выше правило? Любая помощь будет оценена по достоинству.

ответ

1

Посмотрите на constructor из CrawlSpider:

class CrawlSpider(Spider): 

    rules =() 

    def __init__(self, *a, **kw): 
     super(CrawlSpider, self).__init__(*a, **kw) 
     self._compile_rules() 

Как вы можете видеть, если вы измените self.rules где-то, что вам нужно позвонить self._compile_rules() вручную перекомпилировать правила.

Смежные вопросы