#python-3.x #scrapy #splash-screen #scrapy-splash
#python-3.x #scrapy #экран-заставка #scrapy-splash
Вопрос:
Есть страница, на которой после нажатия на ссылку появляется всплывающее уведомление. Итак, чтобы перейти по ссылке, скрипт lua должен нажать на кнопку 1, затем нажать на кнопку 2 (Принять во всплывающем уведомлении), а затем перейти на следующую страницу. Мой скрипт не нажимает на кнопку 2. Где я ошибаюсь?
class PalmBeachSpider(scrapy.Spider):
name ='splash'
custom_settings = {
'SPLASH_URL' : 'http://localhost:8050',
'DOWNLOADER_MIDDLEWARES' : {
'scrapy_splash.SplashCookiesMiddleware': 723,
'scrapy_splash.SplashMiddleware': 725,
'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
},
'SPIDER_MIDDLEWARES' : {
'scrapy_splash.SplashDeduplicateArgsMiddleware': 100,
}
}
script = '''
function main(splash, args)
assert(splash:go(args.url))
assert(splash:wait(0.5))
assert(splash:runjs('document.querySelector("#bodySection > div > div > div:nth-child(7) > div > div:nth-child(2) > a").click()'))
assert(splash:wait(3.5))
assert(splash:runjs('document.querySelector("a#idAcceptYes").click()'))
return {
html = splash:html(),
}
end'''
def start_requests(self):
url = 'https://apps.stjohnsclerk.com/Landmark'
yield SplashRequest(url = url, callback = self.parse, endpoint = 'execute', args={'wait': 0.5, 'lua_source' : self.script})
def parse(self, response):
inspect_response(response, self)
response = HtmlResponse(url=response.url, body=response.data['html'], encoding = 'utf-8')
Ответ №1:
Вы можете просто добавить еще одно ‘assert(splash: wait (…))’ после последнего всплеска: runjs.