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

2025-01-17 09:23:00
admin
原创
138
摘要:问题描述:我想在我的服务器上使用 selenium 构建我的爬虫。因此,我在 Ubuntu17.10 服务器上安装/下载了所需的依赖项,例如 chromedriver、chromium-browser 等但是,当我运行以下代码时:driver = webdriver.Chrome() 它返回以下错误:----...

问题描述:

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

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

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

driver = webdriver.Chrome()

它返回以下错误:

---------------------------------------------------------------------------
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

兴奋啊。。是什么意思啊?

我不明白该错误代码的初衷是什么,以及从哪里开始修复它。

这看上去是非常罕见的情况。

可能相关:

我已在桌面上安装了 ubuntu 桌面 17.10,但无法启动 GUI。因此,我只能使用终端,但到目前为止,它运行良好。我已安装 ssh 并从我的 mac 远程控制 jupyter 笔记本到服务器桌面,这些错误就是由此产生的。希望这些信息与解决此错误有关,否则将中止它。


解决方案 1:

似乎chromedriver需要一些额外的库。这为我解决了这个问题:

apt-get install -y libglib2.0-0=2.50.3-2 \n    libnss3=2:3.26.2-1.1+deb9u1 \n    libgconf-2-4=3.2.6-4+b1 \n    libfontconfig1=2.11.0-6.7+b1

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

为了弄清楚需要哪些依赖项,我反复尝试从命令行运行它,就像这样:/opt/chromedriver/2.33/chromedriver --version一遍又一遍。

然后每次我都使用像apt-cache search <STUFF>和这样的命令apt-cache madison <STUFF>来找出2.33deb所需的软件包的确切版本chromedriver(在我的情况下,但我猜类似的方法对任何版本的都会有效chromedriver)。

编辑

正如评论中所建议的,使用ldd命令打印共享对象依赖关系可能是另一种选择。截至今天,我的chromedriver版本与原始答案相差了几年83.0.4103.14- 依赖关系也不同,但请参见下文以了解可能缺少的内容:

$ /usr/local/bin/chromedriver --version
ChromeDriver 83.0.4103.14 (be04594a2b8411758b860104bc0a1033417178be-refs/branch-heads/4103@{#119})
$ ldd /usr/local/bin/chromedriver
        linux-vdso.so.1 (0x00007fffff7f0000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f414739d000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f414737a000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f414736f000)
        libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f4147246000)
        libnss3.so => /usr/lib/x86_64-linux-gnu/libnss3.so (0x00007f41470f7000)
        libnssutil3.so => /usr/lib/x86_64-linux-gnu/libnssutil3.so (0x00007f41470c4000)
        libnspr4.so => /usr/lib/x86_64-linux-gnu/libnspr4.so (0x00007f4147082000)
        libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f4146f45000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f4146df6000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f4146ddb000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4146be9000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f4147e56000)
        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f4146b76000)
        libplc4.so => /usr/lib/x86_64-linux-gnu/libplc4.so (0x00007f4146b6d000)
        libplds4.so => /usr/lib/x86_64-linux-gnu/libplds4.so (0x00007f4146b68000)
        libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f4146b3e000)
        libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f4146b38000)
        libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f4146b30000)
        libbsd.so.0 => /usr/lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f4146b14000)

man ldd

ldd 打印命令行中指定的每个程序或共享对象所需的共享对象(共享库)。

...

通常情况下,ldd 会调用标准动态链接器(参见 ld.so(8)),并将 LD_TRACE_LOADED_OBJECTS 环境变量设置为 1。这会导致动态链接器检查程序的动态依赖项,并(根据 ld.so(8) 中描述的规则)查找和加载满足这些依赖项的对象。对于每个依赖项,ldd 都会显示匹配对象的位置以及加载该对象的(十六进制)地址。

解决方案 2:

我在 VPS 上使用 selenium/chromedriver 时遇到了同样的错误。我安装了它chromium-browser,问题就解决了。

sudo apt-get install -y chromium-browser

也许这不是chromium-browser需要的,但软件包已随它一起安装。不过,这是一个快速修复。

解决方案 3:

运行此命令来排除故障:(./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

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

解决方案 4:

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

webdriver.Chrome(executable_path='/path/to/chromedriver', service_log_path='/path/to/existing/folder')

解决方案 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")

解决方案 6:

我使用这样的脚本来安装 Chrome

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | tee /etc/apt/sources.list.d/google-chrome.list
apt update -y
apt install -y gconf-service libasound2 libatk1.0-0 libcairo2 libcups2 libfontconfig1 libgdk-pixbuf2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libxss1 fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils
apt install -y google-chrome-stable

解决方案 7:

@TPPZ 的答案需要更新

$ apt-get update -y
$ apt-get install -y libglib2.0-0 libnss3 libgconf-2-4 libfontconfig1

解决方案 8:

通过小心地删除现有的 chromedriver 并将其更新到较新的版本来解决:

  1. 删除所有现有的 chromedriver 文件

  2. 下载wget https://chromedriver.storage.googleapis.com/2.46/chromedriver_linux64.zip(如果需要,请将 2.46 位替换为较新的版本,请参阅此处的兼容版本:http: //chromedriver.chromium.org/downloads)

  3. 解压,通过运行转换为可执行文件chmod +x chromedriver

  4. 将其移动到mv -f chromedriver /usr/local/bin/chromedriverPATH 中

这应该可以解决问题。我以为更新不起作用,因为我第一次尝试时没有删除旧版本,而且我仍在意外使用它。

解决方案 9:

我收到了相同的硒跟踪错误:

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

我的问题是由于在尝试手动运行 chromedriver 时使用的 chromedriver 版本(版本 78)与浏览器版本(版本 79)不同,我会看到
Segmentation fault (core dumped)

一旦我更新了我的 chromedriver 以匹配浏览器,它就可以成功启动

在端口 9515 上启动 ChromeDriver 79.0.3945.36 (3582db32b33893869b8c1339e8f4d9ed1816f143-refs/branch-heads/3945@{#614})

只允许本地连接。

请保护ChromeDriver和相关测试框架使用的端口,以防止恶意代码访问。

解决方案 10:

我通过升级 Selenium 版本解决了这个问题。

对于通过 安装 Selenium 的用户,需要注意的是conda,conda 上的最新 Selenium 版本远远落后于 上的版本pip,因此请切换到pip安装。

解决方案 11:

我遇到了同样的问题,问题是由于chromedriver版本引起的。

请确保您使用的是最新的Chrome 浏览器和最新的chromedriver。

解决方案 12:

恢复到旧版本也许也是一个解决方案......

我正在使用 Ubuntu 18.10,并安装了最新的 Selenium (3.141.0) 和 ChromeDriver (75.0.3770.8),但也遇到了同样的权限问题,之后状态代码为 127。

我尝试安装 Chromium,并注意到 Ubuntu 使用的是版本 73。因此,我将 Chromedriver 的最新版本(此时为 75)恢复到版本 73,这对我来说是有效的。

解决方案 13:

如果您在云中运行 IDE,则可能会发生此错误。GITPOD 等。尝试创建本地 repo 和 VSCode(或您选择的 IDE),selenium 应该可以正常工作。

解决方案 14:

为其创建了一个Gitpod 存储库。

  1. 通过访问以下内容打开 Gitpod 中的存储库:在 Gitpod 中打开

  2. 通过在 Gitpod 终端中运行以下命令开始抓取:

python main.py

解决方案 15:

此命令帮我解决了这个问题。只需安装 Chrome 驱动程序即可。

sudo apt install chromium-chromedriver

解决方案 16:

对于 MacOS 用户

步骤1:运行以下命令进行安装chromedriver

brew install chromedriver

它将为您提供一个可执行文件路径,例如,/usr/local/bin/chromedriver

步骤 2:运行以下命令批准可执行文件

xattr -d com.apple.quarantine /usr/local/bin/chromedriver

解决方案 17:

就我而言,我得到了以下WSL2信息Ubuntu 22.04

Traceback (most recent call last):
  File "/home/camilo/.../Patchwise_Inference_Similarity.py", line 306, in <module>
    generate_pdf_report_from_html(file_name, html, seg_file_dir)
  File "/home/camilo/.../generate_pdf_report_from_html.py", line 27, in generate_pdf_report_from_html
    converter.convert(f"file:///{html_file_path}", pdf_file_path, timeout = 5)
  File "/home/camilo/miniconda3/envs/tf-2.14/lib/python3.10/site-packages/pyhtml2pdf/converter.py", line 38, in convert
    result = __get_pdf_from_html(
  File "/home/camilo/miniconda3/envs/tf-2.14/lib/python3.10/site-packages/pyhtml2pdf/converter.py", line 77, in __get_pdf_from_html
    driver = webdriver.Chrome(service=service, options=webdriver_options)
  File "/home/camilo/miniconda3/envs/tf-2.14/lib/python3.10/site-packages/selenium/webdriver/chrome/webdriver.py", line 70, in __init__
    super(WebDriver, self).__init__(DesiredCapabilities.CHROME['browserName'], "goog",
  File "/home/camilo/miniconda3/envs/tf-2.14/lib/python3.10/site-packages/selenium/webdriver/chromium/webdriver.py", line 90, in __init__
    self.service.start()
  File "/home/camilo/miniconda3/envs/tf-2.14/lib/python3.10/site-packages/selenium/webdriver/common/service.py", line 98, in start
    self.assert_process_still_running()
  File "/home/camilo/miniconda3/envs/tf-2.14/lib/python3.10/site-packages/selenium/webdriver/common/service.py", line 110, in assert_process_still_running
    raise WebDriverException(
selenium.common.exceptions.WebDriverException: Message: Service /home/camilo/.wdm/drivers/chromedriver/linux64/114.0.5735.90/chromedriver unexpectedly exited. Status code was: 127

正如错误所暗示的,chromedriver在里面:~/.wdm/drivers/chromedriver/linux64/114.0.5735.90。那里有一个chromedriver.zip文件,它已经被提取到一个chromedriver文件中(因此,我不需要再次提取它)。然后,我运行:ldd chromedriver并得到以下输出:

/bin/bash: /home/camilo/miniconda3/envs/tf-2.14/lib/libtinfo.so.6: no version information available (required by /bin/bash)
        linux-vdso.so.1 (0x00007ffcf9588000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f927b511000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f927b50c000)
        libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f927b3c3000)
        libnss3.so => not found
        libnssutil3.so => not found
        libnspr4.so => not found
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f927b2d8000)
        libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f927b2af000)
        libgcc_s.so.1 => /home/camilo/miniconda3/envs/tf-2.14/lib/libgcc_s.so.1 (0x00007f927b295000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f927b083000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f927c397000)
        libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007f927afe7000)
        libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007f927afe1000)
        libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f927afd9000)
        libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f927afc3000)
        libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007f927afb4000)

请注意libnss3.so,未找到 、 。因此,我运行了libnssutil3.solibnspr4.so

sudo apt update && sudo apt upgrade && sudo apt install libnss3 libnspr4

我再次运行该ldd命令来检查是否找到了所有内容,最后,原来的错误消失了。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用