WebDriverException: Mensaje: Service / content / chromedriver se cerró inesperadamente. El código de estado era: -6 con ChromeDriver Google Colab y Selenium

Estaba tratando de ejecutar el navegador Chrome sin cabeza usando selenium para eliminar los contenidos de la web. Instalé Chrome sin cabeza usando wget y luego lo descomprimí en mi carpeta actual.

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

Ahora cuando estoy cargando el driver

 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) 

Estoy recibiendo un error

 WebDriverException Traceback (most recent call last)  in () ----> 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 

Cualquier ayuda sería muy apreciada.

Ok, después de un poco de investigación probé a la inversa

 !apt install chromium-chromedriver import selenium as se options = se.webdriver.ChromeOptions() options.add_argument('headless') driver = se.webdriver.Chrome(chrome_options=options) 

En Google Colab, que de nuevo me da el mismo error.

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

Este mensaje de error …

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

… implica que el ChromeDriver salió inesperadamente.

Su principal problema es la incompatibilidad entre la versión de los binarios que está utilizando de la siguiente manera:

  • Según la línea de código:

     !wget "http://chromedriver.storage.googleapis.com/2.25/chromedriver_linux64.zip" 
  • Estás usando Chromedriver = 2.25

  • Notas de la versión de chromedriver = 2.25 menciona claramente lo siguiente:

Soporta Chrome v53-55

  • Aunque no ha mencionado la versión de Chrome Browser , se espera que esté usando una de las últimas versiones de Chrome Browser .

Así que hay una clara falta de coincidencia entre ChromeDriver v2.33 y las versiones de navegador Chrome recientemente lanzadas.

Solución

  • Actualiza ChromeDriver al nivel actual de ChromeDriver v2.44 .
  • Mantenga la versión de Chrome entre los niveles de Chrome v69-71 . ( según las notas de la versión de ChromeDriver v2.44 )

Actualizar

No estoy seguro de google-colaboratory . La conclusión es que tiene que usar la versión coincidente de ChromeDriver con respecto a la versión prevaleciente de la versión de Google Chrome instalada.

Sin embargo, primero debes encontrar una manera de instalar Chrome o Chromium en Colab. Luego, puede usar !wget y !unzip para descargar , descomprimir y comenzar a usar la versión de ChromeDriver correspondiente.

Puede encontrar una discusión sobre la compatibilidad entre ChromeDriver y Chrome Browser en esta discusión

Esto puede no ayudarle directamente. Pero si eventualmente no puedes instalar Chrome + selenium, aún puedes usar phantomjs + selenium. Como este cuaderno:

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

Pero preferiría Chrome, si es posible.

He encontrado la respuesta a la pregunta sobre por qué recibí un error. Instale el chromromedriver de cromo y agréguelo a su variable de ruta, así como al directorio bin. Esta es la solución completa para el problema “cómo raspar los datos utilizando selenium en colab”. Hay un método más mediante el uso de PhantomJS pero esta API ha sido desaprobada por el selenium y es de esperar que la eliminen en la próxima actualización de selenium.

 # 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 

Esto funcionaría para cualquier persona que quiera raspar sus datos en Google Colab y no en su máquina local. Ejecute los pasos como se muestra secuencialmente en el mismo orden. Puede encontrar el cuaderno aquí https://colab.research.google.com/drive/1GFJKhpOju_WLAgiVPCzCGTBVGMkyAjtk .