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

Selenium使用headless Chrome报错及Google Colab爬取不稳定问题求助

问题解决方法

一、终端报错警告消除方案

你遇到的日志提示都属于headless无图形环境下的常见非致命报错,只需要在Chrome启动参数中新增以下配置即可屏蔽:

  • 禁用GPU相关模块,解决GPU初始化错误
  • 调整日志级别,屏蔽无关的DevTools、控制台输出信息

修改后的配置参数如下:

from selenium import webdriver
from bs4 import BeautifulSoup
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
# 新增以下参数解决报错
options.add_argument('--disable-gpu') # 禁用GPU加速,解决GPU相关错误
options.add_argument('--log-level=3') # 只输出fatal级别的日志
options.add_argument('--disable-logging') # 禁用日志输出
options.add_argument('--silent') # 静默启动
options.add_experimental_option('excludeSwitches', ['enable-logging']) # 屏蔽DevTools监听提示

加完以上参数后所有报错警告都会消失。其中Permissions-Policy的提示属于目标网站响应头配置问题,本身不影响爬取,日志屏蔽后就不会再显示。

二、Colab爬取不稳定、内容不一致解决方案

本地非headless模式正常、Colab headless模式异常是因为headless模式的浏览器特征和普通浏览器差异大,很容易被目标网站识别拦截,或者动态内容加载不完整,按以下步骤修改即可:

1. 新增反识别参数

在上述ChromeOptions配置中继续添加以下参数,消除Selenium自动化特征,让headless浏览器的特征和普通Chrome一致:

# 反反爬配置
options.add_argument('--window-size=1920,1080') # 设置和普通桌面浏览器一致的窗口大小
options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36') # 和你本地Chrome的UA保持一致
options.add_argument('--disable-blink-features=AutomationControlled') # 移除自动化标识
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)

2. 增加显式等待,确保动态内容加载完成

不要调用driver.get()之后立刻解析页面,用显式等待等待目标元素加载完成后再爬取内容,示例代码如下:

driver = webdriver.Chrome(options=options)
driver.get("你的目标爬取URL")
# 等待你要爬取的核心元素加载完成,最长等待10秒
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, "你要爬取的元素的CSS选择器"))
)
# 再进行内容解析
soup = BeautifulSoup(driver.page_source, 'lxml')

如果页面是滚动加载的内容,可以加一段页面滚动的代码,把内容都加载出来再解析,就能保证每次拿到的内容长度一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:15:05