Как я могу разбить страницы на страницы следующего вида? - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь разбить страницы этого сайта на страницы (http://www.geny -interim.com / offres / ).Проблема в том, что я использовал селектор css для просмотра каждой страницы, используя этот код

next_page_url=response.css('a.page:nth-child(4)::attr(href)').extract_first()
        if next_page_url:
            yield scrapy.Request(next_page_url)

Но при этом будет разбито только на две страницы, а затем селектор css не работает, как ожидалось.Я попытался использовать это также:

response.xpath('//*[contains(text(), "›")]/@href/text()').extract_first()

, но это также вызывает ошибку значения.Любая помощь будет проголосована.

1 Ответ

0 голосов
/ 28 апреля 2019

Существует проблема с этим выражением XPath

//*[contains(text(), "›")]/@href/text()

, поскольку атрибут href не имеет свойства text().

Вот рабочий паук, которого вы можете адаптировать к вашим потребностям:

# -*- coding: utf-8 -*-
import scrapy


class GenyInterimSpider(scrapy.Spider):
    name = 'geny-interim'
    start_urls = ['http://www.geny-interim.com/offres/']

    def parse(self, response):
        for offer in response.xpath('//div[contains(@class,"featured-box")]'):
            yield {
                'title': offer.xpath('.//h3/a/text()').extract_first()
            }
        next_page_url = response.xpath('//a[@class="page" and contains(.,"›")]/@href').extract_first()
        if next_page_url:
            yield scrapy.Request(response.urljoin(next_page_url), callback=self.parse)
...