WebDriverException:消息:服务chromedriver意外退出.状态代码是:127

del*_*nco 12 python selenium google-chrome selenium-chromedriver selenium-webdriver

我想在我的服务器上使用selenium构建我的爬虫.

因此我在我的Ubuntu17.10服务器上安装/下载了所需的依赖项 - 例如chromedriver,chromium-browser等

但是,当我运行以下代码时:

driver = webdriver.Chrome()
Run Code Online (Sandbox Code Playgroud)

它返回以下错误:

---------------------------------------------------------------------------
WebDriverException                        Traceback (most recent call last)
<ipython-input-14-2cdab8938403> in <module>()
----> 1 driver = webdriver.Chrome()

/home/zachary/.local/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py in __init__(self, executable_path, port, options, service_args, desired_capabilities, service_log_path, chrome_options)
     66             service_args=service_args,
     67             log_path=service_log_path)
---> 68         self.service.start()
     69 
     70         try:

/home/zachary/.local/lib/python3.6/site-packages/selenium/webdriver/common/service.py in start(self)
     96         count = 0
     97         while True:
---> 98             self.assert_process_still_running()
     99             if self.is_connectable():
    100                 break

/home/zachary/.local/lib/python3.6/site-packages/selenium/webdriver/common/service.py in assert_process_still_running(self)
    109             raise WebDriverException(
    110                 'Service %s unexpectedly exited. Status code was: %s'
--> 111                 % (self.path, return_code)
    112             )
    113 

WebDriverException: Message: Service chromedriver unexpectedly exited. Status code was: 127
Run Code Online (Sandbox Code Playgroud)

这是什么意思,它很兴奋..?

我无法得到该错误代码的初衷以及从何处开始修复它.

这看起来非常罕见.

也许相关:

我在桌面上安装了ubuntu desktop 17.10,但未能启动GUI启动.因此我只使用终端,但它到目前为止工作良好.我已经从我的mac到服务器桌面安装了ssh和远程控制jupyter笔记本,这些错误来自它.希望此信息与解决此错误相关,否则将中止.

TPP*_*PPZ 19

它似乎chromedriver需要一些额外的库.这解决了我的问题:

apt-get install -y libglib2.0-0=2.50.3-2 \
    libnss3=2:3.26.2-1.1+deb9u1 \
    libgconf-2-4=3.2.6-4+b1 \
    libfontconfig1=2.11.0-6.7+b1
Run Code Online (Sandbox Code Playgroud)

我正在使用docker容器而不是没有X/GUI的服务器/ VM进行类似的设置.

为了确定需要哪些依赖项,我尝试迭代地从命令行运行它,如下所示:/opt/chromedriver/2.33/chromedriver --version一遍又一遍.

然后在eache时间,我使用了类似命令,apt-cache search <STUFF>apt-cache madison <STUFF>找出2.33 deb所需的软件包的确切版本chromedriver(在我的情况下,但我想类似的东西适用于任何版本chromedriver).

  • 我特别赞赏您对如何解决依赖关系(使用--version运行)以及如何使用apt-cache search的描述。这真的帮助了我,谢谢! (3认同)
  • 仅供参考:我基本上遵循了这个解决方案,只是版本号现在已经过时了。使用像这样的基本引用下载对我来说很有效: ``` libglib2.0-0 \ libnss3 \ libgconf-2-4 \ libfontconfig1 \ ``` 我在 docker 中运行,所以我还需要添加 ``` curl -LO $CHROMIUM_DRIVER_LOCATION 将 chromedriver_linux64.zip ``` 解压缩到我的入口点并以无头模式运行我的驱动程序。 (3认同)
  • 我不确定这是否是更好的方法,但查看需要哪些库的另一种方法是使用“ldd”。例如 `ldd /opt/chromedriver/x.xx/chromedriver`,它将显示 .so 文件列表。寻找那些没有找到的。这至少是一个迭代次数较少的过程 (2认同)

Hie*_*ieu 10

在我的VPS上使用selenium/chromedriver时遇到了同样的错误.我安装chromium-browser了,问题就消失了.

sudo apt-get install -y chromium-browser
Run Code Online (Sandbox Code Playgroud)

也许它不是chromium-browser必需的,但包装也随之安装.但是,这是一个快速解决方案.

  • “包 chromium-browser 不可用,但被另一个包引用。这可能意味着该包丢失、已过时或只能从另一个来源获得” (3认同)
  • 对于与 @JulienD 遇到相同问题的任何人,请尝试“sudo apt-get install -y chromium”。更多关于/sf/answers/4591078831/ (3认同)

小智 7

我有一个类似的问题,但事实证明我的问题是错误地设置了指向已删除文件夹的 service_log_path。

webdriver.Chrome(executable_path='/path/to/chromedriver', service_log_path='/path/to/existing/folder')
Run Code Online (Sandbox Code Playgroud)


Phi*_*emy 7

运行此命令进行故障排除:(./chromedriver您的 chrome 驱动程序二进制文件所在的位置)。

您可能会看到如下错误:

./chromedriver: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory

为了解决这个错误,只需运行:sudo apt-get install libnss3

然后再次检查,看看这次是否有效:./chromedriver

其他一些包也可能丢失。这是一个详尽的清单:

gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget

您可能不需要所有这些,但上面可能列出了您需要的那些。


Deb*_*anB 5

使用Selenium v​​3.11.0ChromeDriver v2.36Chrome v64.x时,您必须从ChromeDriver - WebDriver for Chrome下载最新的ChromeDriver并将其放入您的系统中。接下来,在初始化WebDriverWebBrowser时,您必须传递参数以及 ChromeDriver 的绝对路径,如下所示:executable_path

from selenium import webdriver

driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
driver.get("http://www.python.org")
Run Code Online (Sandbox Code Playgroud)