AI摘要

使用 Selenium 启动 Chrome 时地址栏显示 data:;,通常因版本不兼容或路径错误。解决方法是显式指定浏览器和驱动路径,并添加 --remote-debugging-port=9222 参数以建立调试连接。

使用 Selenium 编写爬虫时,Chrome 能够被启动,但没有正常打开目标网址,地址栏显示为 data:;

Chrome 启动后地址栏停在 data:;


现象分析

data:; 是 Chrome 打开的一个空白 Data URL。它本身不是报错页面,而是浏览器启动后尚未完成目标导航时可能出现的临时页面。因此,排查重点不在这个地址本身,而在 ChromeDriver 是否成功创建 WebDriver 会话,以及 driver.get(url) 是否顺利执行。

一次正常的启动过程如下:

Python 脚本 -> ChromeDriver -> Chrome 浏览器 -> driver.get(url) -> 目标页面

其中,ChromeDriver 负责启动 Chrome 并与其建立自动化控制连接;Selenium 再通过 ChromeDriver 发送导航命令。浏览器与驱动版本不兼容、可执行文件路径错误或调试连接异常,都可能使流程停在浏览器已弹出、页面却没有正常加载的阶段。


解决方法

为 Chrome 显式指定浏览器路径和 ChromeDriver 路径,并添加远程调试端口参数:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

url = "https://example.com"

options = webdriver.ChromeOptions()
options.add_argument("--remote-debugging-port=9222")
options.binary_location = r"D:\\Chrome\\Chrome.exe"

service = Service(r"D:\\Chrome\\chromedriver.exe")
driver = webdriver.Chrome(service=service, options=options)

try:
    driver.get(url)
finally:
    driver.quit()

--remote-debugging-port=9222 会让 Chrome 开放一个本地调试端口;在部分启动异常的环境中,显式设置该参数可以帮助 ChromeDriver 与浏览器建立调试连接。

代码中的几个配置分别承担不同职责:

配置作用
options.binary_location指定要启动的 Chrome 可执行文件,适用于浏览器未安装在默认路径的情况。
Service(...)指定并管理 ChromeDriver 进程。
--remote-debugging-port=9222指定 Chrome 的 DevTools 调试端口,便于调试连接。
driver.get(url)在 WebDriver 会话建立成功后发起实际页面导航。

正常打开目标页面

投币支持一下吧
END