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

Google App Engine上Selenium+ChromeDriver无头模式运行遇找不到Chrome二进制文件错误

解决Google App Engine上Selenium找不到Chrome二进制文件的问题

问题根源

Google App Engine的Python标准运行时基于Linux,默认未预装Chrome浏览器,且无法直接安装系统级软件;你本地Windows环境的Chrome路径和二进制文件在Linux环境下完全无效,这就是报错的核心原因。

解决方案:使用Custom Runtime(Flex环境)部署包含Chrome的镜像

因为标准环境无法安装系统软件,我们需要用自定义Docker镜像构建包含Chrome浏览器、匹配版本的Chromedriver以及Python应用的环境。

步骤1:编写Dockerfile

创建Dockerfile文件,内容如下:

# 基于Python 3.10轻量镜像
FROM python:3.10-slim

# 设置工作目录
WORKDIR /app

# 安装Chrome浏览器及依赖
RUN apt-get update && apt-get install -y \
    wget \
    gnupg \
    && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
    && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' \
    && apt-get update && apt-get install -y \
    google-chrome-stable \
    && rm -rf /var/lib/apt/lists/*

# 安装与Chrome版本匹配的Chromedriver
RUN CHROME_VERSION=$(google-chrome --version | grep -oP '\d+\.\d+\.\d+\.\d+') \
    && wget -q https://chromedriver.storage.googleapis.com/${CHROME_VERSION}/chromedriver_linux64.zip \
    && unzip chromedriver_linux64.zip -d /usr/local/bin/ \
    && rm chromedriver_linux64.zip \
    && chmod +x /usr/local/bin/chromedriver

# 安装Python依赖
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 复制应用代码到容器
COPY . .

# 启动应用(替换成你的应用入口命令,比如gunicorn或flask run)
CMD ["gunicorn", "--bind", ":$PORT", "main:app"]

步骤2:修改Selenium代码

更新爬虫代码,指定Linux环境下的Chrome二进制路径和Chromedriver路径:

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

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--headless=new")  # 新版无头模式,兼容性更好
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)
chrome_options.add_argument("--window-size=1536x754")

# 指定Chrome二进制文件路径
chrome_options.binary_location = "/usr/bin/google-chrome"

# 使用Docker中预安装的Chromedriver
service = Service("/usr/local/bin/chromedriver")
driver = webdriver.Chrome(service=service, options=chrome_options)

步骤3:配置app.yaml

创建或修改app.yaml,指定使用自定义运行时:

runtime: custom
env: flex
manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

步骤4:部署应用

使用gcloud命令部署:

gcloud app deploy

关键注意事项

  • 不要使用本地Windows的Chrome路径或.exe文件,Linux环境无法识别这些内容。
  • 必须确保Chromedriver版本与安装的Chrome版本完全匹配,Dockerfile中的脚本会自动处理版本匹配问题。
  • GAE Flex环境的自定义镜像部署需要一定时间,耐心等待部署完成后再测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 05:44:58