@rodion_ilnitskiy

Как парсить сайт с разными правилами для паука?

Я разделил паука от краулера. Мне необходимо достать некоторые данные с сайта с помощью Python Scrapy, используя разные условия для поучния результатов. Итак, у меня есть функции в одном файле:
#
    def parse(self, response):
        xpath = '//div[@class="proinfor"]//div[@class="prolist_casinforimg"]/a/@href'
        urls = response.xpath(xpath).extract()
        for url in urls:
            url = url.replace("//", "", 1)
            yield scrapy.Request(response.urljoin(url),
                                 callback=self.parse_requem)
            yield scrapy.Request(response.urljoin(url),
                                 callback=self.parse_obj)

    def parse_requem(self, response):
        ...
        yield scrapy.Request(callback=self.parse_item)

    def parse_item(self, response):
        parser = BaseParser(response)
        return parser.construct_item()

    def parse_obj(self, response):
        parser = BaseParser(response)
        return parser.construct()

И код в классе BaseParser:
#
    def parse_price(self):
        Price = response.body
        return Price

    def parse_ex(self):
        exists = self.xpath('//text()').extract_first()
        return exists

    def construct(self):
        item = dict()
        item['ex'] = self.parse_ex()
        return item

    def construct_item(self):
        item = dict()
        item['price'] = self.parse_price()
        return item

Как вы видите, я пытаюсь разделить логику получения данных, однако вместо этого я получаю только результат исполнения от одной функции.
Как разделить логику парсинга для паука?
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы