Как мне прокрутить несколько раз до конца веб-страницы с Lua?

Основываясь на ответе на этот вопрос и приведенном здесь коде, я сделал следующую функцию для прокрутки веб-страницы, пока она не останется прежней:

        function main(splash)
            local scroll_delay = 0.2
            local previous_height = -1
            local number_of_scrolls = 0
            local maximal_number_of_scrolls = 50

            local scroll_to = splash:jsfunc("window.scrollTo")
            local get_body_height = splash:jsfunc(
                "function() {return document.body.scrollHeight;}"
            )
            local get_inner_height = splash:jsfunc(
                "function() {return window.innerHeight;}"
            )
            local get_body_scroll_top = splash:jsfunc(
                "function() {return document.body.scrollTop;}"
            )
            assert(splash:go(splash.args.url))
            splash:wait(splash.args.wait)

            while true do
                local body_height = get_body_height()
                local current = get_inner_height() - get_body_scroll_top()
                if body_height - current <= 0 then
                    break
                end
                scroll_to(0, body_height)
                number_of_scrolls = number_of_scrolls + 1
                if number_of_scrolls == maximal_number_of_scrolls then
                    break
                end
                splash:wait(scroll_delay)
            end        
            return splash:html()
        end

Этот скрипт выполняется с помощью Splash and Scrapy. Однако проблема в том, что кажется, что он всегда ломается, когда достигается максимальное количество свитков. Похоже, что состояние в

if body_height - current <= 0 then
   break
end

никогда не выполняется. Из-за этого мне пришлось ограничить количество попыток прокрутки, чтобы функция не попала в бесконечный цикл. Что я могу сделать, чтобы убедиться, что цикл закончится, если достигнут конец страницы и прокрутка больше невозможна?

0 ответов

Другие вопросы по тегам