Scrapy - как управлять нумерацией страниц без кнопки «Далее»? - PullRequest
0 голосов
/ 22 декабря 2019

Я собираю содержимое статей с сайта, такого как this , где нет кнопки «Далее» для подписки. ItemLoader передается от parse_issue в объекте response.meta, а также некоторых дополнительных данных, таких как section_name. Вот функция:

     def parse_article(self, response):
        self.logger.info('Parse function called parse_article on {}'.format(response.url))
        acrobat = response.xpath('//div[@class="txt__lead"]/p[contains(text(), "Plik do pobrania w wersji (pdf) - wymagany Acrobat Reader")]')
        limiter = response.xpath('//p[@class="limiter"]')
        if not acrobat and not limiter:
            loader = ItemLoader(item=response.meta['periodical_item'].copy(), response=response)
            loader.add_value('section_name', response.meta['section_name'])
            loader.add_value('article_url', response.url)
            loader.add_xpath('article_authors', './/p[@class="l doc-author"]/b')
            loader.add_xpath('article_title', '//div[@class="cf txt "]//h1')
            loader.add_xpath('article_intro', '//div[@class="txt__lead"]//p')
            article_content = response.xpath('.//div[@class=" txt__rich-area"]//p').getall()
            # # check for pagiantion
            next_page_url = response.xpath('//span[@class="pgr_nrs"]/span[contains(text(), 1)]/following-sibling::a[1]/@href').get()
            if next_page_url:
                # I'm not sure what should be here... Something like this: (???)
                yield response.follow(next_page_url, callback=self.parse_article, meta={
                'periodical_item' : loader.load_item(),
                'article_content' : article_content
                })
            else:
                loader.add_xpath('article_content', article_content)
                yield loader.load_item()

Проблема в parse_article функции: я не знаю, как объединить содержимое абзацев со всех страниц в один элемент. Кто-нибудь знает, как это решить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...