Как добавить следующую страницу l oop scrapy - PullRequest
0 голосов
/ 08 мая 2020

Вот мой код. Прямо сейчас он может собирать информацию только с одной страницы. Как добавить страницу l oop?

  import scrapy


class P1Spider(scrapy.Spider):
    name = 'p1'
    allowed_domains = ['www.visit.ferienmesse.ch']
    start_urls = ['https://www.visit.ferienmesse.ch/de/aussteller']

    def parse(self, response):

        for data in response.xpath('//ul[@class="ngn-search-list ngn-mobile-filter"]/li'):
            yield {
                'Link': response.urljoin(data.xpath('.//h2[@class="ngn-content-box-title"]/a/@href').get()),
                'Title': data.xpath('//h2[@class="ngn-content-box-title"]/a/bdi/text()').get(),
                'Address': data.xpath('.//span[@class="ngn-hallname"]/text()').get(),
                'Code': data.xpath('.//span[@class="ngn-stand"]/text()').get()
            }

Ответы [ 2 ]

0 голосов
/ 26 июля 2020

Рассмотрите возможность наследования от scrapy.CrawlSpider вместо scrapy.Spider. Он выполняет работу по поиску и сканированию ссылок за вас. Вам просто нужно дать ему набор правил, которые определяют, по каким ссылкам следует переходить, и он позаботится о выдаче соответствующих запросов, так что вы можете просто сосредоточиться на получении очищенного контента.

0 голосов
/ 08 мая 2020

просто добавьте этот код ниже и надейтесь, что он сработает.

 next_page = response.css('.pagination li.arrow a[rel="next"]::attr(href)').get()

    if next_page:
        yield scrapy.Request(url=response.urljoin(next_page), callback=self.parse)
...