python - 等待每个页面在 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 页之一不会加载整个脚本崩溃。有没有办法让脚本每次都等待页面成功加载,如果它不会加载就再试一次?
解决方案
您可以使用 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')
推荐阅读
- c - cpufreq_get 在 linux 内核模块中返回 0
- c# - Kestrel + IIS 反向代理请求中止未触发
- c# - ef核心中的hasqueryfilter错误
- javascript - 如何使用 chai 或 mocha 检查图像是否存在?
- python - 获取字典内列表列表中每个键的最大值列表
- c - g_io_channel 和 FIFO 导致 CPU 固定到 100%
- python - 在另一个 Schema 中构建 Python Voluptuous Schema
- java - Hibernate 添加新的孩子并更新现有的
- java - inputStream.read 无法正常工作
- python - 列表中包含对象的 Python3 对象比没有对象的调用时间更长