Azure Databricks中Selenium调用Chrome报错:无Chrome二进制文件
解决Azure Databricks中Selenium+Chrome爬取的Chrome二进制文件找不到错误
问题描述
在Azure Databricks环境运行Selenium爬虫代码时,出现以下错误:
WebDriverException: Message: unknown error: no chrome binary at C:\Program Files\Google\Chrome\Application
错误原因
- Databricks集群基于Linux系统,代码中指定了Windows系统的Chrome安装路径,路径完全不匹配
- Databricks默认集群未预装Chrome/Chromium浏览器,即使路径正确也找不到可执行文件
解决步骤
1. 在Databricks集群中安装Chromium浏览器
在Notebook中执行Shell命令完成安装:
%sh apt-get update apt-get install -y chromium-browser
2. 修改代码适配Linux环境
调整Chrome选项中的二进制文件路径,并使用webdriver-manager自动管理驱动版本(避免手动上传驱动的版本兼容问题),修改后的完整代码如下:
%pip install selenium %pip install webdriver-manager from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.chrome.options import Options # 配置Chrome选项 options = Options() # 指定Linux环境下Chromium的二进制文件路径 options.binary_location = "/usr/bin/chromium-browser" options.add_argument('--headless') # 无头模式适配无GUI环境 options.add_argument("--no-sandbox") # 禁用沙箱模式(Linux环境必需) options.add_argument("--disable-dev-shm-usage") # 解决临时文件空间不足问题 options.add_argument("--disable-gpu") # 禁用GPU加速 options.add_argument("user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36") # 模拟正常浏览器UA # 使用webdriver-manager自动获取匹配版本的chromedriver driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options) # 示例爬取操作 url = "https://data.cms.gov/tools/mapping-medicare-disparities-by-population" driver.get(url) # 等待页面标题加载完成 wait = WebDriverWait(driver, 10) wait.until(EC.presence_of_element_located((By.TAG_NAME, "title"))) print(driver.title) # 清理并退出驱动 driver.quit()
关键注意点
- 必须根据集群的Linux环境指定正确的浏览器二进制路径,常用路径:
/usr/bin/chromium-browser或/usr/bin/google-chrome - 保留
--no-sandbox和--disable-dev-shm-usage参数,否则在Databricks的容器化环境中会启动失败 - 使用
webdriver-manager可以自动匹配浏览器与驱动版本,避免手动上传驱动带来的版本不兼容问题
内容的提问来源于stack exchange,提问作者Abhishek Jain
相关产品推荐
相关产品推荐

