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

在AWS上用Python运行ChromeDriver遇错求助:Selenium找不到Chrome二进制文件

解决AWS EC2上Selenium的"cannot find Chrome binary"错误

嘿,我帮你拆解下这个问题——你遇到的unknown error: cannot find Chrome binary,核心是Selenium找不到Chrome浏览器的可执行文件,而不是你指定的chromedriver路径有问题!毕竟本地能正常跑是因为你电脑上预装了Chrome,但AWS EC2实例默认是不带Chrome浏览器的,这大概率就是问题根源。下面一步步帮你搞定:

第一步:先确认EC2上有没有装Chrome

先SSH登录你的EC2实例,敲这个命令检查Chrome是否存在:

which google-chrome

如果啥输出都没有,说明Chrome完全没装,得先安装。根据你的EC2操作系统(一般是Amazon Linux 2或者Ubuntu),选对应的命令执行:

要是用的Amazon Linux 2:

sudo amazon-linux-extras install epel -y
sudo yum install google-chrome-stable -y

要是用的Ubuntu:

sudo apt update
sudo apt install google-chrome-stable -y

装完再跑一遍which google-chrome,会输出类似/usr/bin/google-chrome的路径,记下来,这就是Chrome的二进制文件位置。

第二步:修改你的Selenium代码,指定Chrome路径

你之前的代码只给了chromedriver的路径,但没告诉Selenium Chrome浏览器在哪。得用ChromeOptions来配置这个路径,顺便加上AWS环境必须的无头模式参数(毕竟EC2没图形界面),修改后的代码如下:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_path = "/home/ec2-user/chrome/chromedriver"
# 配置Chrome选项,指定浏览器二进制文件路径
chrome_options = Options()
chrome_options.binary_location = "/usr/bin/google-chrome"  # 这里填你刚才查到的路径
# 关键:AWS环境必须开无头模式,加几个参数避免权限/内存问题
chrome_options.add_argument("--headless")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")

# 初始化driver时传入配置
driver = webdriver.Chrome(executable_path=chrome_path, options=chrome_options)

book_categories_list = []
for i in asin:
    try:
        url = u"https://www.amazon.com/dp/" + i  # 补全你的完整URL
        # 这里写你的爬取逻辑...
    except Exception as e:
        print(f"处理ASIN {i}时出错: {str(e)}")
        continue

第三步:务必确保Chrome和chromedriver版本匹配

划重点!这是很多人踩坑的地方——如果chromedriver和Chrome版本不兼容,照样会出问题。你可以用这两个命令查版本:

  • 查Chrome版本:google-chrome --version
  • 查chromedriver版本:/home/ec2-user/chrome/chromedriver --version

要是版本不匹配,就下载和Chrome对应的chromedriver,上传到EC2的/home/ec2-user/chrome/目录替换掉旧的即可。

第四步:检查chromedriver的权限

最后别忘了给chromedriver加可执行权限,不然EC2跑不了:

chmod +x /home/ec2-user/chrome/chromedriver

额外提醒几个坑

  • EC2默认用户是ec2-user,确保你放chromedriver的路径和安装的Chrome都是这个用户能访问的
  • 无头模式的三个参数一定要加,没图形界面的服务器上Chrome必须这么跑
  • --no-sandbox和--disable-dev-shm-usage是为了规避Linux环境下的权限限制和临时内存不足问题

按上面的步骤操作完,应该就能解决这个错误了。如果还是不行,把你执行命令的输出和完整的错误日志贴出来,我再帮你排查!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:57:06