Scrapy Spla sh | Извлечение информации после нажатия кнопки - PullRequest
0 голосов
/ 25 марта 2020

Я создал веб-мастер с помощью Scrapy, используя spla sh, который входит на страницу поиска, нажимает на критерии поиска, затем просматривает все результаты и получает доступ к каждой отдельной странице. Сценарий, кажется, работает нормально до этого момента. Я довольно новичок в чистке и программировании в целом.

Следующим шагом, на котором я застрял, является загрузка информации с каждой отдельной страницы. Для этого нужно нажать кнопку, чтобы всплыла информация. Сценарий lua, который у меня есть, кажется, выполняет кнопку pu sh, но когда я пытаюсь извлечь информацию, я получаю пустые квадратные скобки.

Я думаю, что ошибка находится где-то в этом коде. , Я не знаю, правильно ли я выполняю запрос всплеска или делаю что-то не так, когда пытаюсь получить информацию, которую пытаюсь извлечь.

Я застрял на этом несколько дней и не могу найти решение.

'''
def parse_debatt(self, absolute_debatt_url):
    click_video = """function main(splash)
                            assert(splash:go(splash.args.url))
                            splash:wait(1)

                            local get_element_dim_by_xpath = splash:jsfunc([[
                                function(xpath) {
                                    var element = document.evaluate(xpath, document, null,
                                        XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
                                    var element_rect = element.getClientRects()[0];
                                    return {"x": element_rect.left, "y": element_rect.top}
                                }
                            ]])

                            -- -- Clicks the button 
                            local page_dimensions = get_element_dim_by_xpath(
                                '//*[@id="video-protocol-toggle"]')
                            splash:set_viewport_full()
                            splash:mouse_click(page_dimensions.x, page_dimensions.y)
                            splash:wait(1)

                            return {
                                splash:html()
                            }
                        end"""

    yield SplashRequest(url=absolute_debatt_url.url,
                        callback=self.parse,
                        endpoint='render.html',
                        args={'lua_source': click_video})   

    namn = absolute_debatt_url.xpath('//*//*[@id="video-protocol"]/article/div[1]/div[2]/h3/span/text()').extract()
    tal = absolute_debatt_url.xpath('//*[@id="video-protocol"]/article/div[1]/div[2]/div').extract()


    yield {'namn': namn,
           'tal': tal}
'''
...