Как ограничить количество отслеживаемых страниц на сайте в Python Scrapy

Я пытаюсь создать паука, который мог бы эффективно собирать текстовую информацию со многих веб-сайтов. Поскольку я являюсь пользователем Python, меня направили в Scrapy. Тем не менее, во избежание очистки огромных веб-сайтов, я хочу ограничить использование пауком не более 20 страниц определенного типа ».глубина» за сайт, Вот мой паук:

class DownloadSpider(CrawlSpider):
    name = 'downloader'
    download_path = '/home/MyProjects/crawler'
    rules = (Rule(SgmlLinkExtractor(), callback='parse_item', follow=True),)

    def __init__(self, *args, **kwargs):
        super(DownloadSpider, self).__init__(*args, **kwargs)
        self.urls_file_path = [kwargs.get('urls_file')]
        data = open(self.urls_file_path[0], 'r').readlines()
        self.allowed_domains = [urlparse(i).hostname.strip() for i in data] 
        self.start_urls = ['http://' + domain for domain in self.allowed_domains]

    def parse_start_url(self, response):
        return self.parse_item(response)

    def parse_item(self, response):
        self.fname = self.download_path + urlparse(response.url).hostname.strip()
        open(str(self.fname)+ '.txt', 'a').write(response.url)
        open(str(self.fname)+ '.txt', 'a').write('\n')

urls_file - это путь к текстовому файлу с URL. Я также установил максимальную глубину в файле настроек. Вот моя проблема: если я установлюCLOSESPIDER_PAGECOUNT Исключение это закрывает паук, когдаВсего количество очищенных страниц (независимо от того, для какого сайта) достигает значения исключения. Тем не менее, я должен прекратить чистку, когда я соскребаю, скажем, 20 страниц с каждого URL. Я также пытался вести подсчет с помощью переменной типа self.parsed_number + = 1, но это нетоже не работает - кажется, что скрап неURL идет по URL, но смешивает их. Любой совет высоко ценится!

Ответы на вопрос(2)

Ваш ответ на вопрос