#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-адреса