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

爬取100MB大页面时ChromeDriver报bad inspector message错误求助

解决ChromeDriver爬取大页面时的"bad inspector message"错误

针对你爬取100MB大页面时遇到的这个错误,结合你已经排除内存问题的情况,我整理了几个针对性的解决方案,按优先级尝试:

1. 优化Chrome参数,增强大页面处理能力

旧版本的Chrome在处理超大页面时,DevTools通信容易出现异常,你可以在现有配置基础上添加以下参数,缓解这个问题:

chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("window-size=1920,1080")
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--ignore-certificate-errors')
# 添加以下优化参数
chrome_options.add_argument('--disable-dev-shm-usage')  # 禁用共享内存限制,避免大页面通信瓶颈
chrome_options.add_argument('--disable-cache')  # 禁用缓存,减少内存占用与资源冲突
chrome_options.add_argument('--disk-cache-size=0')  # 强制关闭磁盘缓存
chrome_options.add_argument('--max-old-space-size=4096')  # 给V8引擎分配4GB内存(可根据你的机器配置调整)
chrome_options.add_argument('--disable-extensions')  # 禁用扩展,排除第三方干扰
chrome_options.add_argument('--disable-plugins')  # 禁用插件,简化运行环境

driver = webdriver.Chrome(executable_path="chromedriver", options=chrome_options)

2. 调整页面加载策略,避免等待完全加载

默认的页面加载策略会等待所有资源(图片、脚本、样式等)加载完成,对于100MB的大页面来说,不仅耗时还容易触发通信异常。你可以改用eager策略,只要DOM结构加载完成就可以获取页面源码:

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

chrome_options = Options()
# 保留你原有的基础配置
chrome_options.add_argument("--headless")
chrome_options.add_argument("window-size=1920,1080")
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--ignore-certificate-errors')

# 修改页面加载策略
caps = DesiredCapabilities.CHROME.copy()
caps['pageLoadStrategy'] = 'eager'  # 可选值还有'none',若页面动态渲染需求低可尝试

driver = webdriver.Chrome(executable_path="chromedriver", desired_capabilities=caps, options=chrome_options)

3. 确认ChromeDriver与Chrome版本的兼容性

虽然你的Chrome 66和ChromeDriver 2.38理论上属于兼容范围(2.38支持Chrome 65-67),但部分小版本可能存在特定bug。你可以尝试下载对应Chrome版本的最新ChromeDriver小版本替换现有驱动,看看是否能修复通信异常。

4. 分批次获取页面内容(备选方案)

如果以上方法都无效,可以尝试通过滚动页面逐步加载内容,再拼接完整源码:

import time

# 先滚动到页面底部,触发所有内容加载
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# 等待几秒让内容加载完成(根据页面实际加载速度调整时间)
time.sleep(5)
# 再获取页面源码
html = driver.page_source

这个方法适合动态渲染的大页面,需要确保滚动操作能触发所有内容的加载。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:27:14