Selector sin cabeza navegador webdriver Restablecimiento de la conexión por par

Estoy tratando de raspar los datos de las URL a continuación. Pero el selenium falla cuando driver.get(url) Algunas veces el error es [Errno 104] Connection reset by peer , a veces [Errno 111] Connection refused . En días raros funciona bien y en mi Mac con navegador real, la misma araña funciona bien cada vez. Así que esto no está relacionado con mi spider .

He probado muchas soluciones, como esperar, tener selectores en la página, espera implícita, usar solicitudes de selenium, pasar encabezados de solicitud adecuados, etc. Pero nada parece funcionar.

 http://www.snapdeal.com/offers/deal-of-the-day https://paytm.com/shop/g/paytm-home/exclusive-discount-deals 

Estoy usando python , headless Firefox webdriver y el headless Firefox webdriver de headless Firefox webdriver para lograr esto. El sistema operativo es centos 6.5 .

Nota: Tengo muchas páginas pesadas de AJAX que se raspan con éxito, algunas de ellas se encuentran a continuación.

 http://www.infibeam.com/deal-of-the-day.html, http://www.amazon.in/gp/goldbox/ref=nav_topnav_deals 

Ya pasé muchos días tratando de solucionar el problema sin suerte. Cualquier ayuda sería apreciada.

Después de días de tintineo por este problema, finalmente encontré la causa. Escribiéndolo aquí para el beneficio de la comunidad. El navegador sin cabeza estaba fallando debido a la falta de RAM en el servidor, los mensajes de error extraños de webdriver eran reales de pita .

El servidor estuvo funcionando durante 60 días sin reiniciar, reiniciando funcionó. Después de boost el canje por 3 veces, no se ha enfrentado el problema en los últimos días. También programé una tarea para limpiar los cachés de archivos de página ( http://www.yourownlinux.com/2013/10/how-to-free-up-release-unused-cached-memory-in-linux.html ).

Encontré esta pregunta mientras buscaba un error similar. Parece que es un error de selenium 3.8.1 y 3.9.0.

https://github.com/SeleniumHQ/selenium/issues/5296

Bajar de calificación a 3.8.0 resuelve este problema

He estado utilizando Selenium y chromedriver (python3) con fines de raspado desde hace algún tiempo. Con la última actualización de Google Chrome tuve que lidiar con dos problemas.

1) Error en el inicio de webdriver:

Solución: Tuve que agregar el argumento “no-sandbox”.

chrome_options.add_argument (‘- no-sandbox’)

2) [Errno 104] Restablecimiento de la conexión por par:

Solución. Parece que hay un problema con sockets y solicitudes http. O bien el contenido de la página web es demasiado grande o no le da suficiente tiempo para cargar la página. Al menos eso es lo que pensé. Establecí el tiempo máximo de carga de la página en 60 segundos y parece que funciona bien.

driver.set_page_load_timeout (60)

Agregué un pequeño retraso entre las inicializaciones de webdrivers que también parece ayudar.

time.sleep (0.5)