python селен - не может отменить дальше при определенной c высоте в динамической c странице - PullRequest
0 голосов
/ 27 февраля 2020
from selenium import webdriver
from bs4 import BeautifulSoup
import time 


def main():
    # options
    options = webdriver.ChromeOptions()
    # headless
    options.add_argument('headless')
    driver = webdriver.Chrome('chromedriver.exe', options=options)
    driver.implicitly_wait(3)
    url = 'https://channels.vlive.tv/FE123/home'
    driver.get(url)
    time.sleep(3)

    # -----------------------------------------------------------------------------------------

    SCROLL_PAUSE_TIME = 1

    # Get scroll height
    last_height = driver.execute_script("return document.body.scrollHeight")

    while True:

        # Scroll down to bottom
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

        # Wait to load page
        time.sleep(SCROLL_PAUSE_TIME)

        # Calculate new scroll height and compare with last scroll height 
        new_height = driver.execute_script("return document.body.scrollHeight")
        if new_height > 82590:#== last_height:
            break
        last_height = new_height
    print(last_height, 'finished scrolling')

    # -----------------------------------------------------------------------------------------

    html = driver.page_source
    print(html)


if __name__ == "__main__":
    main()

Этот код открывает безголовый chrome и перемещается к URL-адресу и прокручивает вниз, чтобы загрузить динамическое c содержимое в new_height> 82590 и копировать html.

Проблема заключается в том, когда Я прокручиваю немного больше, например new_height> 82591, он вылетает в 'html = driver.page_source' и не печатает html. Страница может быть прокручена до 120000+. И другая страница, которую можно прокрутить на более чем 120000, была хороша с этим кодом.

Когда он падает, я получил сообщение, заполненное связкой html в одной строке, а не распечатанное с печати (html) и следующее.

(Session info: headless chrome=80.0.3987.122)


Process finished with exit code 1

Я не знаю, что происходит между высотой 82590 и 82591, но что-то там не так ...

...