WebDriverException: Service U:/Scraping/chromedriver.exe se cerró inesperadamente. El código de estado era: 1 mientras trabajaba con Chrome y Python
google-chrome selenium (2)
He estado tratando de hacer que el controlador web funcione con Python en Chrome en el trabajo, pero no puedo por mi vida averiguar qué es lo que está mal, a pesar de la resolución de problemas durante la mayor parte del día.
He descomprimido chromedriver a la carpeta en la que estoy trabajando. He intentado usar el argumento
executable_path
con chromedriver.
He intentado actualizar las opciones dentro de chromedriver para dirigir al archivo Chrome.exe.
El código está abajo. Muy claro. ''url'' tiene una dirección anterior en el código que no estoy incluyendo aquí, el script ni siquiera llega tan lejos.
from selenium import webdriver
driver = webdriver.Chrome(executable_path = ''U:/Scraping/chromedriver.exe'')
driver.get(url)
Y el error:
Traceback (most recent call last):
File "<ipython-input-67-db2ce2aa7cdf>", line 1, in <module>
runfile(''U:/Scraping/Project.py'', wdir=''U:/Scraping'')
File "C:/ProgramData/Anaconda3/lib/site-packages/spyder/utils/site/sitecustomize.py", line 705, in runfile
execfile(filename, namespace)
File "C:/ProgramData/Anaconda3/lib/site-packages/spyder/utils/site/sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, ''exec''), namespace)
File "U:/Scraping/Project.py", line 14, in <module>
driver = webdriver.Chrome(executable_path = ''U:/Scraping/chromedriver.exe'')
File "C:/ProgramData/Anaconda3/lib/site-packages/selenium/webdriver/chrome/webdriver.py", line 68, in __init__
self.service.start()
File "C:/ProgramData/Anaconda3/lib/site-packages/selenium/webdriver/common/service.py", line 98, in start
self.assert_process_still_running()
File "C:/ProgramData/Anaconda3/lib/site-packages/selenium/webdriver/common/service.py", line 111, in assert_process_still_running
% (self.path, return_code)
WebDriverException: Service U:/Scraping/chromedriver.exe unexpectedly exited. Status code was: 1
Al pasar la
ruta absoluta
del binario
ChromeDriver a
través del argumento
executable_path
, debe mencionar la
ruta
entre comillas simples (es decir,
''''
) separadas por una sola barra diagonal (es decir,
/
) junto con el interruptor en bruto (es decir,
r
) de la siguiente manera:
from selenium import webdriver
driver = webdriver.Chrome(executable_path=r''U:/Scraping/chromedriver.exe'')
driver.get(url)
Consideración adicional
-
Asegúrese de haber descargado el formato exacto del archivo binario de ChromeDriver desde la ubicación de descarga correspondiente a su sistema operativo subyacente entre:
- chromedriver_win32.zip : para el sistema operativo Windows
-
Asegúrese de que el binario de ChromeDriver tenga permiso ejecutable para el usuario no administrador .
- Ejecute su prueba como un usuario no administrador .
-
Otra posible causa del error puede deberse a que falta la entrada
127.0.0.1 localhost
en/etc/hosts
Solución
-
Sistema operativo Windows : agregue
127.0.0.1 localhost
a/etc/hosts
-
Mac OSX - Asegura las siguientes entradas:
127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhost fe80::1%lo0 localhost
Referencias
Según la discusión en selenium.common.exceptions.WebDriverException: Mensaje: No se puede conectar al Servicio geckodriver :
-
Selenium no requiere que
127.0.0.1 localhost
se establezca explícitamente en el archivo host. - Sin embargo, es un requisito obligatorio para asignar localhost al bucle local IPv4 (127.0.0.1)
- El mecanismo de esta asignación no tiene que ser siempre a través del archivo de hosts.
- En los sistemas operativos Windows , no se asigna en absoluto en el archivo hosts (la resolución del localhost se realiza mediante el sistema de resolución de DNS).
TL; DR
El mismo error aquí.
Mi problema era que tenía
chromedriver.exe
en una compañía de uso compartido.
Algunas configuraciones de seguridad o cortafuegos probablemente impidieron que Python accediera al archivo ejecutable en esa ubicación remota.
Hice
chromedriver.exe
local y funcionó.