如何在Selenium中屏蔽ChromeDriver的日志错误信息
解决Windows下Selenium+ChromeDriver控制台日志/错误屏蔽问题
针对你遇到的ChromeDriver和Chrome输出的DevTools连接信息、stun服务器解析错误等控制台日志,以下是几种可行的屏蔽方法:
方法一:添加Chrome启动参数屏蔽自身日志
通过给Options添加多个日志控制参数,直接让Chrome减少输出:
from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager options = Options() # 基础配置 options.add_argument("--headless=new") options.add_argument('--ignore-ssl-errors=yes') options.add_argument('--ignore-certificate-errors=yes') # 关键:屏蔽Chrome日志输出 options.add_argument('--log-level=3') # 仅记录致命错误(级别3对应FATAL) options.add_argument('--disable-logging') # 禁用Chrome的日志系统 options.add_argument('--silent') # 启用静默模式,抑制非必要输出 options.add_argument('--no-default-browser-check') # 跳过默认浏览器检查警告 options.add_argument('--no-first-run') # 跳过首次运行初始化提示 # 配置ChromeDriver Service,将驱动日志输出到nul service = Service( ChromeDriverManager().install(), log_output='nul', service_args=['--log-path=nul'] # 将Chrome的日志路径指向nul ) driver = webdriver.Chrome(service=service, options=options) # 你的爬虫代码... driver.quit()
方法二:全局重定向stderr(结合上下文管理器)
如果上述参数仍有遗漏的日志,可以在driver运行期间临时重定向Python的stderr到空设备,确保所有错误输出被拦截:
from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager import os import sys options = Options() options.add_argument("--headless=new") options.add_argument('--ignore-ssl-errors=yes') options.add_argument('--ignore-certificate-errors=yes') options.add_argument('--log-level=3') options.add_argument('--disable-logging') service = Service(ChromeDriverManager().install(), log_output='nul') # 保存原始stderr,使用上下文管理器确保恢复 original_stderr = sys.stderr try: sys.stderr = open(os.devnull, 'w') driver = webdriver.Chrome(service=service, options=options) # 执行爬虫逻辑... finally: driver.quit() sys.stderr.close() sys.stderr = original_stderr
说明
--log-level=3是Chrome的参数,日志级别从0到3,3只显示最严重的致命错误;log_output='nul'和--log-path=nul分别控制ChromeDriver和Chrome自身的日志输出路径,nul是Windows的空设备;- 上下文管理器的方式能确保即使爬虫代码抛出异常,也能恢复原始stderr,避免影响后续代码的输出。
内容的提问来源于stack exchange,提问作者drissbri
相关产品推荐
相关产品推荐

