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

Selenium结合Selenium Wire的while True循环运行速度逐渐变慢求助

解决Selenium Wire循环迭代耗时递增的问题

可能的原因

  • Selenium Wire请求缓存堆积:默认情况下,Selenium Wire会存储所有拦截到的网络请求,哪怕你没用到这些数据,每次循环都会新增记录,导致后续处理时需要遍历的历史请求越来越多,拖慢耗时。
  • 浏览器上下文残留:复用同一个浏览器实例时,页面的Cookie、本地存储、缓存资源会不断累积,哪怕刷新页面,部分冗余资源依然会留在浏览器进程中,导致加载和操作变慢。
  • 未清理的浏览器状态:循环中如果没正确处理弹窗、iframe切换,或者元素引用未及时释放,会导致浏览器渲染上下文越来越臃肿,虽然内存占用没明显飙升,但实际运行效率下降。

可行的解决方案

  1. 清空Selenium Wire请求缓存
    每次循环结束后调用driver.requests.clear(),直接清空已捕获的请求记录,避免历史数据堆积。

  2. 重置浏览器存储与状态
    在循环的收尾阶段执行以下操作,清理浏览器的冗余数据:

    # 删除所有Cookie
    driver.delete_all_cookies()
    # 清理本地存储和会话存储
    driver.execute_script("window.localStorage.clear(); window.sessionStorage.clear();")
    
  3. 定期重启浏览器实例
    不要长期复用同一个浏览器进程,比如每执行N次循环后关闭当前浏览器,重新初始化一个实例。这样能彻底清除浏览器的所有残留状态,回到初始性能水平。示例代码:

    from seleniumwire import webdriver
    import time
    
    loop_count = 0
    driver = webdriver.Chrome()
    
    while True:
        loop_count += 1
        start = time.time()
        print(f"循环{loop_count}启动: {time.strftime('%Y-%m-%d %H:%M:%S')}")
    
        try:
            driver.get("你的自有网站地址")
            # 执行任务逻辑(拦截流量、操作页面等)
            ...
    
            # 清理单次循环的缓存
            driver.requests.clear()
            driver.delete_all_cookies()
            driver.execute_script("window.localStorage.clear(); window.sessionStorage.clear();")
        except Exception as e:
            print(f"循环出错: {str(e)}")
            driver.quit()
            driver = webdriver.Chrome()
    
        # 每10次循环重启浏览器
        if loop_count % 10 == 0:
            driver.quit()
            driver = webdriver.Chrome()
    
        print(f"循环耗时: {time.time() - start:.2f}秒")
    
  4. 优化Selenium Wire捕获配置
    初始化浏览器时,通过配置限制请求存储的大小,或者在不需要拦截的阶段关闭捕获:

    options = {
        'request_storage': 'memory',
        'request_storage_max_size': 100  # 最多存储100条请求
    }
    driver = webdriver.Chrome(seleniumwire_options=options)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:05:25