You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Selenium的driver.get()会无规律卡顿且超时设置无效?

driver.get() 无规律卡顿的排查方向与解决建议

以下是几种常见的原因及对应的解决办法:

  • 页面加载策略导致资源阻塞
    默认页面加载策略为normal,会等待所有资源(图片、第三方广告/统计脚本等)加载完成才结束driver.get()。如果页面存在加载缓慢的第三方资源,会导致driver.get()长时间卡住,甚至绕过set_page_load_timeout的限制(因为浏览器仍处于“加载中”状态)。

解决:修改加载策略为eager(DOM加载完成即返回)或none(直接返回,不等待加载):

from selenium.webdriver.chrome.options import Options

options = Options()
options.page_load_strategy = 'eager'  # 或 'none'
driver = webdriver.Chrome(options=options)
  • 超时设置未正确生效或未处理
    set_page_load_timeout()依赖浏览器的加载状态判断,若页面存在无限轮询的JS脚本,可能不会触发超时。另外,当前捕获的WebDriverException范围太广,建议单独处理TimeoutException,并强制终止页面加载:
from selenium.common.exceptions import TimeoutException

def get_bs4_element(url):
    try:
        driver.get(url)
        html = driver.page_source
        return BeautifulSoup(html, 'lxml')
    except TimeoutException as e:
        print(f"页面加载超时: {url}, 错误: {str(e)}")
        driver.execute_script("window.stop();")  # 强制停止加载
        return BeautifulSoup(driver.page_source, 'lxml')
    except WebDriverException as e:
        print(f"Selenium异常: {url}, 错误: {str(e)}")
  • 复用Driver导致的会话残留问题
    循环复用同一个Driver时,之前页面的缓存、Cookie、JS上下文可能占用资源,导致后续请求卡顿。

解决:每次请求后清理缓存,或超时后重启Driver:

# 每次请求后清理
driver.delete_all_cookies()
driver.execute_script("window.localStorage.clear();")
driver.execute_script("window.sessionStorage.clear();")

# 超时后重启Driver的函数
def restart_driver():
    global driver
    driver.quit()
    options = Options()
    options.page_load_strategy = 'eager'
    driver = webdriver.Chrome(options=options)
    driver.set_page_load_timeout(60)

# 在超时异常中调用
except TimeoutException as e:
    print(f"超时,重启Driver: {url}")
    restart_driver()
    return None
  • 目标网站反爬机制
    部分网站会检测自动化请求,通过延迟加载、阻塞资源限制爬虫,导致无规律卡顿。

解决:添加真实User-Agent、设置随机请求间隔:

options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36")

# 循环中添加随机延迟
import time
import random
time.sleep(random.uniform(1, 3))
  • 版本兼容性问题
    确认ChromeDriver版本与Chrome完全匹配(比如Chrome 115.0.5790.171对应ChromeDriver也需为115.0.5790.171),即使大版本一致,小版本不匹配也可能导致异常。

内容的提问来源于stack exchange,提问作者luke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 18:23:09