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

Google Colab中Selenium无法定位元素、page_source为空如何解决?

解决Google Colab中Selenium无法获取页面内容的问题

核心问题分析

你的代码返回空页面,大概率是代理失效/被拦截、页面未完成加载、Headless模式被网站识别为爬虫这几个原因导致的,以下是针对性解决方案:


1. 先排除代理问题

你使用的代理64.235.204.107:3128可能已失效、无法连接目标网站,或被whatismyipaddress.com拦截。先移除代理配置测试:

import sys
sys.path.insert(0,'/usr/lib/chromium-browser/chromedriver')
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# 完善Chrome配置,模拟真实浏览器
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless=new')  # 新版Headless更接近真实浏览器
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36')

wd = webdriver.Chrome('chromedriver', chrome_options=chrome_options)

wd.get('http://whatismyipaddress.com')
time.sleep(3)  # 强制等待页面加载
html = wd.page_source
print(html)
wd.quit()

如果移除代理后能正常获取页面,说明原代理不可用,需更换有效代理。


2. 添加智能等待逻辑

直接调用page_source可能页面还未完成渲染,推荐用显式等待替代强制等待:

import sys
sys.path.insert(0,'/usr/lib/chromium-browser/chromedriver')
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless=new')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36')

wd = webdriver.Chrome('chromedriver', chrome_options=chrome_options)

wd.get('http://whatismyipaddress.com')
# 等待页面核心元素加载(比如IP地址显示区域)
try:
    WebDriverWait(wd, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, 'ip-address'))
    )
except Exception as e:
    print(f"等待超时: {e}")

html = wd.page_source
print(html)
wd.quit()

3. 禁用网站自动化检测

部分网站会识别Selenium的自动化特征,需添加配置规避:

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless=new')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--disable-blink-features=AutomationControlled')  # 禁用自动化标识
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)
chrome_options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36')

4. 确保ChromeDriver与浏览器版本匹配

Colab中预装的Chromium可能版本更新,导致驱动不兼容。先查看当前浏览器版本,再下载对应驱动:

# 查看Chromium版本
!chromium-browser --version

# 示例:如果版本是114.0.5735.90,下载对应驱动
!wget -N https://chromedriver.storage.googleapis.com/114.0.5735.90/chromedriver_linux64.zip
!unzip chromedriver_linux64.zip
!chmod +x chromedriver
!mv -f chromedriver /usr/lib/chromium-browser/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 14:45:41