Selenium WebDriver服务器运行失败排查:本地正常、服务器报错
解决Selenium在服务器运行时chromedriver权限错误的方案
核心原因
服务器环境中chromedriver缺少可执行权限,或未正确安装Chrome浏览器及匹配的驱动版本,再加上服务器无桌面环境的特性,会触发额外运行限制。
解决步骤:
修复chromedriver权限
找到服务器上chromedriver的实际路径,执行命令赋予可执行权限:chmod +x /path/to/chromedriver替换
/path/to/chromedriver为驱动的真实路径(比如/usr/bin/chromedriver)。安装Chrome浏览器(服务器必备)
多数服务器默认未预装Chrome,以Ubuntu/Debian系统为例,执行安装命令:sudo apt update && sudo apt install -y chromium-browser chromium-chromedriver改用webdriver-manager自动管理驱动(推荐)
手动管理驱动易出现版本不匹配、权限问题,用webdriver-manager可自动下载匹配版本的驱动并处理权限:- 先安装依赖:
pip install webdriver-manager - 修改代码,添加服务器必需参数:
from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager chromeOptions = webdriver.ChromeOptions() chromeOptions.add_argument("ignore-certificate-errors") chromeOptions.add_argument('--headless=chrome') chromeOptions.add_argument('--no-sandbox') # 服务器环境必须,规避沙箱权限限制 chromeOptions.add_argument('--disable-dev-shm-usage') # 解决临时内存空间不足问题 wbe = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chromeOptions)
- 先安装依赖:
GitHub Actions环境特殊配置
如果是在GitHub Actions中运行,需在工作流yml文件里配置环境依赖:jobs: run-scraper: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: 配置Python环境 uses: actions/setup-python@v5 with: python-version: '3.8' - name: 安装依赖包 run: | python -m pip install --upgrade pip pip install selenium webdriver-manager - name: 安装Chrome及驱动 run: | sudo apt update sudo apt install -y chromium-browser chromium-chromedriver - name: 运行抓取脚本 run: python main.py
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

