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
Soporta Chrome v53-55
Así que hay una clara falta de coincidencia entre ChromeDriver v2.33 y las versiones de navegador Chrome recientemente lanzadas.
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 .