Как ограничить количество отслеживаемых страниц на сайте в 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, но смешивает их. Любой совет высоко ценится!