Scrapy Splash дважды возвращает точки данных с первой страницы

#python #web-scraping #scrapy #scrapy-splash

Вопрос:

Я пытаюсь удалить URL-адрес каждой записи в блоге пользователя сообщества SAP, однако, когда я запускаю паука, сообщения с первой страницы удаляются дважды. Кто-нибудь знает, в чем может быть причина?

Локализация моего паука такова: запустил запрос на первую страницу сообщений в блоге, очистил все URL-адреса сообщений, нажал кнопку «далее», чтобы перейти на следующую страницу, и снова вызвал метод синтаксического анализа, повторив ту же процедуру для всех доступных страниц.

 class QuotesSpider(scrapy.Spider):
name = 'blog1'
allowed_domains = ['sap.com']
start_urls = ['http://people.sap.com/mark.labedz#content:blogposts']


def start_requests(self):
    for url in self.start_urls:
        blog_posts = {}
        blog_posts["url"] = []
        blog_posts["from page"] = 1
        yield SplashRequest(url=url,
                            callback=self.parse,
                            cb_kwargs=dict(blog_posts=blog_posts),
                            endpoint='render.html',
                            args={'wait': 5})

    def parse(self, response, blog_posts):

        print("nfrom page")
        print("url:",response.url)
        print("number:",blog_posts["from page"])
        blog_posts["from page"] =1

        post_urls = response.xpath('//*[@class="dm-content-item__title"]/a/@href').extract()
        print(post_urls)
        for url in post_urls:
            blog_posts["url"].append(url)

        script = """function main(splash)
                                assert(splash:go(splash.args.url))
                                splash:wait(5)
                                assert(splash:runjs('document.querySelector("#content-tab > div.dm-tab-navigation.up-space-below > div.up-pagination.up-pagination--bottom > div.up-pagination__wrap.up-pagination__wrap--right > button:nth-child(1)").click()'))
                                splash:set_viewport_full()
                                return {url = splash:url(),
                                        html = splash:html()}
                            end"""


        yield SplashRequest(url=response.url,
                            callback=self.parse,
                            cb_kwargs=dict(blog_posts=blog_posts),
                            endpoint='execute',
                            args={'lua_source': script, 'wait': 2})
 

и это результат:

 2021-08-10 19:15:55 [scrapy.core.engine] DEBUG: Crawled (200) <GET 
http://people.sap.com/mark.labedz#content:blogposts via http://localhost:8050/render.html> (referer: None)

from page
url:http://people.sap.com/mark.labedz#content:blogposts
number:1

    *urls from page 1*

2021-08-10 19:16:02 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://people.sap.com/mark.labedz#content:blogposts via http://localhost:8050/execute> (referer: None)

from page
url:https://people.sap.com/mark.labedz#content:blogposts:2
number:2

    *urls from page 1*

2021-08-10 19:16:07 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://people.sap.com/mark.labedz#content:blogposts:2 via http://localhost:8050/execute> (referer: None)

from page
url:https://people.sap.com/mark.labedz#content:blogposts:2
number:3

    *urls from page 2* 
 

Я не понимаю, почему #content:блог-посты и #content:блог-посты:2 возвращают одни и те же URL-адреса