Web服务器部署Selenium爬虫报错:'chromedriver'需在PATH中
解决服务器上Selenium驱动无法找到的问题
看起来你已经尝试了常规的PATH配置,但还是遇到了问题,我给你几个针对性的排查和解决步骤,应该能帮你搞定:
1. 先检查驱动文件的执行权限
服务器上的驱动文件经常会因为没有可执行权限导致报错,这是很容易漏掉的点。你可以通过终端给驱动加上执行权限:
# 给你的chromedriver加权限 chmod +x /home/animalsp/public_html/maps/maps2/chromedriver # 如果你把驱动放到了/usr/local/bin,也要给那里的文件加权限 chmod +x /usr/local/bin/chromedriver # Firefox的geckodriver同理 chmod +x /home/animalsp/public_html/maps/maps2/geckodriver
2. 确认驱动与浏览器的版本兼容性
你提到的chromedriver版本是2.3.8,这大概率是笔误——Chrome 66.0对应的正确chromedriver版本应该是2.38(少了个小数点)。版本不兼容会直接导致驱动无法启动,你可以先验证下当前驱动的版本:
/home/animalsp/public_html/maps/maps2/chromedriver --version
如果版本不对,下载对应Chrome 66的chromedriver(2.38版本)替换现有文件即可。
至于Firefox 60和geckodriver 0.20.1是兼容的,但同样要确保geckodriver有执行权限。
3. 验证路径正确性与运行用户权限
- 首先,你可以在脚本里加几行代码,确认驱动路径是否存在、是否有执行权限:
import os CHROMEDRIVER_PATH = "/home/animalsp/public_html/maps/maps2/chromedriver" print("路径是否存在:", os.path.exists(CHROMEDRIVER_PATH)) print("是否有执行权限:", os.access(CHROMEDRIVER_PATH, os.X_OK))
如果输出是False,说明要么路径写错了,要么运行脚本的用户没有访问该路径的权限。
- 另外,要注意脚本运行的用户(比如web服务器的运行用户,如apache、nginx)是否有权限访问
/home/animalsp/public_html/maps/maps2/目录,必要时调整目录权限:
chmod +rx /home/animalsp/public_html/maps/maps2/
4. 调整Selenium初始化参数(适配旧版本)
你用的是Selenium 3.12.0,这个版本里chrome_options和firefox_options参数已经被标记为弃用,建议改用options参数,避免潜在的兼容性问题:
Chrome版本修改后代码:
from selenium import webdriver from selenium.webdriver.chrome.options import Options CHROMEDRIVER_PATH = "/home/animalsp/public_html/maps/maps2/chromedriver" WINDOW_SIZE ="1920,1080" chrome_options = Options() chrome_options.add_argument("--headless") chrome_options.add_argument("--window-size=%s" % WINDOW_SIZE) # 改用options参数 driver = webdriver.Chrome(executable_path=CHROMEDRIVER_PATH, options=chrome_options) driver.get("https://na.chargepoint.com/charge_point")
Firefox版本修改后代码:
from selenium import webdriver from selenium.webdriver.firefox.options import Options FIREFOXDRIVER_PATH ="/home/animalsp/public_html/maps/maps2/geckodriver" WINDOW_SIZE ="1920,1080" firefox_options = Options() firefox_options.add_argument("--headless") firefox_options.add_argument("--window-size=%s" % WINDOW_SIZE) # 改用options参数 driver = webdriver.Firefox(executable_path=FIREFOXDRIVER_PATH, options=firefox_options) driver.get("https://na.chargepoint.com/charge_point")
5. 检查服务器上的浏览器是否能正常启动
有时候问题出在浏览器本身,你可以在服务器终端尝试直接启动无头浏览器,验证是否能正常运行:
# 测试Chrome google-chrome --headless --disable-gpu --window-size=1920,1080 https://na.chargepoint.com/charge_point # 测试Firefox firefox --headless --window-size=1920,1080 https://na.chargepoint.com/charge_point
如果浏览器启动失败,说明服务器上的浏览器缺少依赖库,比如Ubuntu系统可以安装这些依赖:
# Chrome依赖 sudo apt-get install libnss3 libgconf-2-4 libxss1 libappindicator1 libindicator7 # Firefox依赖 sudo apt-get install libdbus-glib-1-2 libgtk-3-0
先按照这些步骤排查,应该能定位并解决你的问题。
内容的提问来源于stack exchange,提问作者Eunice TT
相关产品推荐
相关产品推荐

