首页 > 解决方案 > 等待每个页面在 Selenium 中加载

问题描述

我正在尝试完成一个从某些页面读取数据的简单脚本。我的代码如下所示:

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 次,每次用于不同的页面。

我的问题是,如果提到的 200 页之一不会加载整个脚本崩溃。有没有办法让脚本每次都等待页面成功加载,如果它不会加载就再试一次?

标签: pythonselenium

解决方案


您可以使用 WebDriverWait 等待JavaScriptcomplete或其中一种complete状态interactive

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')

推荐阅读