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

Python中Chrome版Selenium WebDriver循环迭代变慢问题排查

Selenium迭代过程中速度逐渐变慢的原因分析

我需要遍历50个分组(站点板块),每个分组包含100000个页面ID,但发现Selenium在每次迭代中速度逐渐变慢。相关代码、运行日志及版本信息如下:

相关代码

chrome_driver_way = './chromedriver/chromedriver.exe'
options = Options()
options.add_argument('--no-sandbox')
options.add_argument('--headless')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--disable-gpu')
options.add_argument("--disable-extensions")
options.add_argument("--disable-infobars")
options.add_argument("--log-level=2")
options.add_argument('--ignore-ssl-errors')
options.add_argument('--ignore-certificate-errors')

for group in groups:
    texts = [None] * len(ids)
    with webdriver.Chrome(
            executable_path=chrome_driver_way,
            options=options
    ) as browser:
        start = time.time()
        for n, id in enumerate(ids):
            browser.get(url.format(id))
            text = browser.find_elements(
                By.XPATH, '//div/div/div'
            )
            texts[n] = text[0].text
            if n != 0 and n % 100 == 0:
                print('group {}: IDs {}-{} processed in {} s'.format(group, n - 100, n, time.time() - start))
                start = time.time()
            del text

运行日志

group 1: IDs 100-200 processed in 8.312201976776123 s 
group 1: IDs 1100-1200 processed in 9.060782194137573 s 
group 1: IDs 2100-2200 processed in 11.111422777175903 s 
... 
group 1: IDs 14100-14200 processed in 36.37690353393555 s

版本信息

Python 3.10
Selenium 4.1.0
Chrome 133.0.6943.142

可能的原因

  • 浏览器内存泄漏:每次调用browser.get()加载新页面时,旧页面的DOM元素、JS上下文、缓存等资源未被完全释放,随着迭代次数增加,浏览器进程内存占用持续攀升,直接导致运行速度下降。Python的del text只能清理本地变量,无法影响浏览器端的内存占用。
  • 版本兼容性问题:Selenium 4.1.0是2022年发布的旧版本,与2024年的Chrome 133版本差距过大,驱动与浏览器之间的通信逻辑存在适配问题,会导致效率降低、资源泄漏等异常情况。
  • 页面加载未优化:每次browser.get()会加载页面所有资源(图片、脚本、样式等),长期运行后浏览器缓存、历史记录堆积,导致后续页面加载耗时增加。此外,代码未显式等待页面就绪就直接查找元素,可能触发Selenium默认的隐式等待累积开销,进一步拖慢速度。
  • 未清理浏览器缓存:长时间运行过程中,浏览器的缓存、Cookie、历史记录等数据不断累积,占用磁盘和内存资源,影响页面加载效率。
  • ChromeDriver版本不匹配:Chrome 133需要对应版本的ChromeDriver,而Selenium 4.1.0配套的ChromeDriver版本通常适配Chrome 97左右,旧驱动无法兼容新版本Chrome,会导致通信效率低下、资源占用异常等问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 05:22:38