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

Mac系统下Selenium爬虫chromedriver_mac相对路径配置问题求助

解决Mac上Selenium相对路径调用chromedriver的问题

我太懂这种跨平台路径坑的烦躁了——Windows上跑的好好的代码,到Mac就直接找不到文件,其实核心是路径构建逻辑和Mac特有的权限问题在作祟,咱们一步步搞定它:

问题根源拆解

你之前用os.chdir来回切换目录的方式很容易搞乱脚本的当前工作目录,而且Mac系统下chromedriver需要执行权限,这是Windows不需要的关键步骤,也是你报错的隐形原因之一。

靠谱的相对路径解决方案(不依赖绝对路径)

别再用os.chdir折腾目录了,咱们基于当前Python脚本的位置来构建chromedriver的路径,这样不管谁运行、从哪个目录启动脚本都能精准找到文件。

假设你的Python文件在./src目录下,直接用这段代码:

import os
from selenium import webdriver
# 如果用的是Selenium 4.x,更推荐用Service类,代码更规范
from selenium.webdriver.chrome.service import Service

# 获取当前脚本所在目录的绝对路径(不管脚本从哪启动都能拿到正确路径)
current_script_dir = os.path.dirname(os.path.abspath(__file__))

# 拼接chromedriver的相对路径:src → 上级目录 → lib → chromedriver_mac
# os.path.join会自动适配Mac/Windows的路径分隔符(/或\),不用手动写
chromedriver_path = os.path.join(current_script_dir, "..", "lib", "chromedriver_mac")

# 标准化路径,处理掉../这类相对路径标记,避免路径混乱
chromedriver_path = os.path.normpath(chromedriver_path)

# 关键!给chromedriver添加执行权限(Mac必须,否则会提示"找不到文件",实际是权限不够)
os.chmod(chromedriver_path, 0o755)

# Selenium 3.x版本用这行初始化
# browser = webdriver.Chrome(executable_path=chromedriver_path)

# Selenium 4.x推荐用Service类初始化
service = Service(chromedriver_path)
browser = webdriver.Chrome(service=service)

为什么之前的方法在Mac失效?

  1. 工作目录混乱:os.chdir会改变整个脚本的工作目录,如果你的脚本是从./scraper目录启动的,os.chdir("..")会跳转到scraper的上级目录,再os.chdir("lib")可能根本找不到目标文件夹;
  2. 执行权限缺失:Mac系统下下载的chromedriver默认没有执行权限,直接调用会触发“找不到文件”的错误(本质是权限不足无法执行);
  3. 跨平台路径差异:Windows用\作为路径分隔符,Mac用/,手动切换目录的方式没考虑这种差异,容易导致路径拼接错误。

额外提醒

  • 一定要确保chromedriver版本和你的Chrome浏览器版本完全匹配(比如Chrome是119.x,chromedriver也要对应119.x版本),版本不匹配也会触发类似的报错;
  • 就算你的项目用了虚拟环境,这个方法依然有效,因为路径是基于脚本位置构建的,和虚拟环境无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:15:10