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

