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

Python Selenium多进程爬取时元素存在却无法定位及浏览器冻结问题咨询

仅增加time.sleep()时长或者WebDriverWait的等待秒数无法从根本解决你的问题。你的核心问题是多进程启动的Chrome实例过多,系统CPU、内存资源被占满,导致部分浏览器进程被系统挂起,无法响应WebDriver的指令,并非等待时长不足导致的元素加载问题。

你可以按照以下方向优化解决:

  • 优先优化Chrome启动参数,大幅降低资源占用
    你可以在初始化options时添加以下配置,单实例内存占用可以降低50%以上:
options.add_argument("--headless=new")  # 启用新版无头模式,不渲染GUI界面
options.add_argument("--disable-gpu")
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--blink-settings=imagesEnabled=false")  # 禁用图片加载
options.add_argument("--disable-extensions")
options.add_argument("--disable-plugins")
options.add_argument("--disable-background-networking")
  • 降低多进程并发数
    普通消费级笔记本/台式机,建议并发数控制在CPU核心数的1-1.5倍,4核CPU最多开6个进程即可,10-15个并发会直接占满系统资源,导致进程调度异常,出现浏览器冻结、无响应的情况。
  • 优化现有代码逻辑
    你当前的代码存在重复点击、变量未初始化的问题,同时可以添加进程级超时机制:
  1. 初始化retries = 0,避免变量未定义报错
  2. 去掉冗余的外层点击逻辑,统一放到重试循环内处理
  3. 给每个爬取进程设置最大执行时长,超时后直接强制杀死进程以及对应的Chrome、chromedriver进程,避免僵尸进程占资源
  • 更高效率的替代方案
    如果爬取规模较大,可以尝试抓包获取Shopee商品详情接口,直接通过HTTP请求获取配送日期数据,无需启动浏览器,资源占用极低,爬取效率可以提升10倍以上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 23:09:02