Дождитесь загрузки каждой страницы в Selenium - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь завершить sh простой скрипт чтения данных с некоторых страниц. Мой код выглядит следующим образом:

def parsePage (https):
    driver = webdriver.Chrome("path\chromedriver.exe")
    driver.get(https)
    content = driver.page_source
    soup = BeautifulSoup(content, 'html.parser')

    #All the stuff going below

Затем функция выполняется примерно 200 раз на всех oop, каждая для отдельной страницы.

Моя проблема в том, что если одна из упомянутых 200 страниц не загрузит весь скрипт, вылетает. Есть ли способ заставить скрипт каждый раз ждать успешной загрузки страницы, и если он не загружается, попробуйте еще раз?

1 Ответ

2 голосов
/ 23 января 2020

Вы можете подождать complete или одного из complete и interactive состояния JavaScript, используя WebDriverWait:

from selenium.webdriver.support.ui import WebDriverWait

def parsePage (https):
    driver = webdriver.Chrome("path\chromedriver.exe")
    driver.get(https)
    WebDriverWait(driver, 20).until(
        lambda d: d.execute_script('return (document.readyState == "complete" || document.readyState == "interactive")'))

    content = driver.page_source
    soup = BeautifulSoup(content, 'html.parser')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...