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

Google Colab中Selenium出现TimeoutException问题求助

解决Google Colab中Selenium定位元素超时的问题

在Google Colab运行Selenium爬取目标站点时出现TimeoutException,本地运行相同代码却正常,核心问题是Colab的无头浏览器配置缺少模拟真实浏览器的关键参数,导致被目标站点反爬拦截或页面加载异常。以下是调整后的解决方案:

修改后的Chrome驱动配置代码

!apt-get update
!apt install chromium-chromedriver
!cp /usr/lib/chromium-browser/chromedriver /usr/bin
!pip install selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

# 配置Chrome驱动参数,补充模拟真实浏览器的设置
options = webdriver.ChromeOptions()
options.add_argument('--headless=new')  # 使用新版无头模式,行为更接近真实浏览器
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument("window-size=1920,1080")  # 调整窗口尺寸,避免布局异常
options.add_argument('--disable-gpu')
options.add_argument('--disable-infobars')
options.add_argument('--disable-blink-features=AutomationControlled')  # 禁用自动化检测
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
# 添加真实User-Agent,避免被识别为无头浏览器
options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36')

driver = webdriver.Chrome(executable_path='/usr/bin/chromedriver', options=options)
driver.implicitly_wait(15)  # 延长隐式等待时间,适配Colab网络延迟

调整后的爬取代码

driver.get('https://www.ternbicycles.com/us/bikes#')

# 处理Cookie弹窗,增加容错逻辑
try:
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.agree-button.eu-cookie-compliance-agree-button"))).click()
except:
    pass  # 弹窗未出现时直接跳过

# 滚动页面到底部,触发动态内容加载
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# 等待第一个产品标题元素加载完成
WebDriverWait(driver, 30).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.title>h2>a")))

# 获取所有产品标题
titles = [elem.text for elem in driver.find_elements(By.CSS_SELECTOR, "div.title>h2>a")]
print(titles)

# 关闭驱动
driver.quit()

关键调整说明

  1. 使用新版无头模式--headless=new:旧版无头浏览器行为与真实浏览器差异大,容易被反爬识别,新版模式更接近正常Chrome的行为
  2. 添加真实User-Agent:目标站点可能通过User-Agent识别无头浏览器,添加真实浏览器的UA可避免拦截
  3. 调整窗口尺寸:过小的窗口可能导致页面布局错乱,元素无法正常渲染
  4. 禁用自动化检测:通过参数禁止浏览器暴露自动化特征,减少被拦截概率
  5. 增加滚动操作:目标站点可能采用滚动加载内容,手动滚动可触发内容渲染
  6. 容错处理Cookie弹窗:避免弹窗未出现时阻塞后续流程
  7. 延长等待时间:Colab的网络延迟高于本地,适当延长等待时间可避免超时

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 05:06:28