Jak ograniczyć liczbę śledzonych stron na stronie w Python Scrapy

Próbuję zbudować pająka, który może skutecznie zeskrobać informacje tekstowe z wielu stron internetowych. Ponieważ jestem użytkownikiem Pythona, zostałem skierowany do Scrapy. Jednak, aby uniknąć drapania ogromnych stron internetowych, chcę ograniczyć pająka do zeskrobania nie więcej niż 20 stron określonej „głębi”na stronę. Oto mój pająk:

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 to ścieżka do pliku tekstowego z adresami URL. Ustawiłem również maksymalną głębokość w pliku ustawień. Oto mój problem: jeśli ustawięCLOSESPIDER_PAGECOUNT wyjątek zamyka pająka, gdycałkowity liczba zeskrobanych stron (niezależnie od tego, która strona) osiągnie wartość wyjątku. Muszę jednak przerwać skrobanie, gdy zeskrobałem powiedzmy 20 stron z każdego adresu URL. Próbowałem również utrzymywać liczbę ze zmienną taką jak self.parsed_number + = 1, ale to też nie zadziałało - wydaje się, że scrapy nie przechodzi przez url przez url, ale je miesza. Wszelkie porady są mile widziane !

questionAnswers(2)

yourAnswerToTheQuestion