Я работаю над очисткой элементов с нескольких веб-сайтов (используя для этого scrapy). Элементы, которые я пытаюсь очистить, не всегда четко определены и могут быть в текстах. Поэтому я использую совпадения строк для распознавания элементов. Однако это также дает некоторую нежелательную информацию вместе с моими необходимыми данными, и мой парсер занимает много времени, очищая нежелательную информацию. Чтобы избежать этого, я установил верхний предел количества очищаемых элементов. Используя условие «если», я вызываю исключение CloseSpider() при достижении верхнего предела. Этот подход работал нормально, пока мне не нужно было очищать только один домен. Как мне расширить его для нескольких доменов.
class CustomSpider(CrawlSpider):
name = "myspider"
start_urls = ['https://www.example1.com/']
allowed_domains = ['www.example1.com']
rules = [Rule(LinkExtractor(allow=()), callback='parse_info', follow = True)]
def parse_info(self, response):
scrape_count = self.crawler.stats.get_value('item_scraped_count')
if scrape_count == 20:
raise CloseSpider("Limit Reached")
Мой вопрос в том, как расширить этот код для следующего сценария:
class CustomSpider(CrawlSpider):
name = "myspider"
start_urls = ['https://www.example1.com/', 'https://www.example2.com/']
allowed_domains = ['www.example1.com', 'www.example2.com/']
rules = [Rule(LinkExtractor(allow=()), callback='parse_info', follow = True)]
def parse_info(self, response):
suggest change in logic here
scrape_count = self.crawler.stats.get_value('item_scraped_count')
if scrape_count == 20:
raise CloseSpider("Limit Reached")
itemсdomain, есть ли в нем поле, указывающее, к какому домену он принадлежит? что-то вродеitem = {'domain': 'www.example2.com'}? - person eLRuLL   schedule 04.01.2018