WebDriverException:消息:服务/ content / chromedriver意外退出。状态代码为:-6(使用ChromeDriver Google Colab和Selenium)

时间:2018-11-29 04:52:08

标签: python selenium google-chrome selenium-webdriver google-colaboratory

我试图运行使用硒的无头chrome浏览器从网络上抓取内容。我使用wget安装了无头Chrome,然后将其解压缩到当前文件夹中。

!wget "http://chromedriver.storage.googleapis.com/2.25/chromedriver_linux64.zip"
!unzip chromedriver_linux64.zip

现在,当我加载驱动程序时

from selenium.webdriver.chrome.options import Options
import os
# instantiate a chrome options object so you can set the size and headless preference
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--window-size=1920x1080")

chrome_driver = os.getcwd() +"/chromedriver"
driver = webdriver.Chrome(chrome_options=chrome_options,executable_path=chrome_driver)

我遇到错误

WebDriverException                        Traceback (most recent call last)
<ipython-input-67-0aeae0cfd891> in <module>()
----> 1 driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=chrome_driver)
  2 driver.get("https://www.google.com")
  3 lucky_button = driver.find_element_by_css_selector("[name=btnI]")
  4 lucky_button.click()
  5 /usr/local/lib/python3.6/dist-packages/selenium/webdriver/chrome/webdriver.py in __init__(self, executable_path, port, chrome_options, service_args, desired_capabilities, service_log_path)
 60             service_args=service_args,
 61             log_path=service_log_path)
---> 62         self.service.start()
 63 
 64         try:

 /usr/local/lib/python3.6/dist-packages/selenium/webdriver/common/service.py in start(self)
 84         count = 0
 85         while True:
 ---> 86             self.assert_process_still_running()
 87             if self.is_connectable():
 88                 break

 /usr/local/lib/python3.6/dist-packages/selenium/webdriver/common/service.py in assert_process_still_running(self)
 97             raise WebDriverException(
 98                 'Service %s unexpectedly exited. Status code was: %s'
 ---> 99                 % (self.path, return_code)
100             )
101 

WebDriverException: Message: Service /content/chromedriver unexpectedly exited. Status code was: -6

任何帮助将不胜感激。

好吧,经过一些研究,我尝试了另一种方法

!apt install chromium-chromedriver
import selenium as se

options = se.webdriver.ChromeOptions()
options.add_argument('headless')

driver = se.webdriver.Chrome(chrome_options=options)

在Google colab上,这再次给了我相同的错误

WebDriverException: Message: Service chromedriver unexpectedly exited. Status code was: -6

3 个答案:

答案 0 :(得分:2)

此错误消息...

WebDriverException: Message: Service /content/chromedriver unexpectedly exited. Status code was: -6

...表示 ChromeDriver 意外退出。

您的主要问题是所使用的二进制版本之间的不兼容性

  • 按照代码行:

    !wget "http://chromedriver.storage.googleapis.com/2.25/chromedriver_linux64.zip"
    
  • 您正在使用 chromedriver = 2.25

  • chromedriver=2.25的发行说明中明确提到以下内容:
  

支持 Chrome v53-55

  • 尽管您没有提到 Chrome浏览器的版本,但可以预期您使用的是最新的 Chrome浏览器版本。

因此 ChromeDriver v2.33 与最近发布的 Chrome浏览器版本之间显然不匹配。

解决方案


更新

我不确定google-colaboratory。最重要的是,您必须相对于安装的 Google Chrome 版本的主流版本使用匹配的 ChromeDriver 版本。

但是,您需要首先找到一种在Colab上安装Chrome或Chromium的方法。然后,您可以使用 !wget !unzip 下载解压缩并开始使用匹配的 ChromeDriver 版本。

您可以在此discussion

中找到有关 ChromeDriver Chrome浏览器的兼容性的讨论

答案 1 :(得分:1)

这可能无法直接帮助您。但是,即使最终无法安装Chrome +硒,您仍然可以使用phantomjs +硒。像这个笔记本一样:

https://colab.research.google.com/drive/1V62zhjw2V5buxdN1s9mqkLzh3FWqSq8S

但如果可能的话,我希望使用Chrome。

答案 2 :(得分:0)

我找到了有关我为什么出错的问题的答案。请安装chrome-chromedriver,并将其添加到您的路径变量以及bin目录中。这是“如何在colab上使用硒来抓取数据”问题的完整解决方案。使用PhantomJS还有另一种方法,但是硒已弃用该API,希望他们在下一个硒更新中将其删除。

# install chromium, its driver, and selenium
!apt-get update
!apt install chromium-chromedriver
!cp /usr/lib/chromium-browser/chromedriver /usr/bin
!pip install selenium
# set options to be headless, ..
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
# open it, go to a website, and get results
wd = webdriver.Chrome('chromedriver',options=options)
wd.get("https://www.website.com")
print(wd.page_source)  # results

这将适用于希望在google colab上而不是在本地计算机上抓取数据的任何人。 请按相同顺序依次执行以下步骤。 您可以在https://colab.research.google.com/drive/1GFJKhpOju_WLAgiVPCzCGTBVGMkyAjtk处找到笔记本。