permitir - ¿Qué es una buena herramienta para raspar la pantalla con soporte Javascript?
instalar javascript en firefox (9)
@insin Watir no es solo IE.
¿Existe una buena suite de pruebas o conjunto de herramientas que pueda automatizar la navegación del sitio web (con soporte de Javascript) y recopilar el HTML de las páginas?
Por supuesto, puedo raspar HTML directamente con BeautifulSoup. Pero esto no me sirve para sitios que requieren Javascript. :)
He estado usando Selenium para esto y me parece que funciona muy bien. Selenium se ejecuta en el navegador y funcionará con Firefox, Webkit e IE. Selenium
Puede usar Selenium o Watir para manejar un navegador real.
También hay algunos navegadores sin cabeza basados en JavaScript:
Personalmente, estoy muy familiarizado con Selenium, que tiene soporte para escribir scripts de automatización en un buen número de idiomas y tiene herramientas más maduras, como la excelente extensión IDE de Selenium para Firefox, que se puede usar para escribir y ejecutar testcases, y puede exportar scripts de prueba a muchos idiomas.
Selenium ahora envuelve htmlunit para que ya no necesite iniciar un navegador. La nueva API de WebDriver es muy fácil de usar también. El primer ejemplo usa el controlador htmlunit
Sería muy difícil codificar una solución que funcionaría con cualquier sitio arbitrario. Cada implementación del menú de navegación puede ser bastante única. He trabajado mucho con raspadores y, si conoces el sitio al que deseas orientarme, aquí es cómo lo abordaré.
Por lo general, si analiza el javascript particular utilizado en un menú de navegación, es bastante fácil usar expresiones regulares para extraer todo el conjunto de variables que se utilizan para construir el menú de navegación. Nunca he usado Beautiful Soup, pero por su descripción parece que solo funciona en elementos HTML y no puede trabajar dentro de las etiquetas de script.
Si aún tiene problemas o necesita emular algunos POST o ajax de formularios, obtenga Firefox e instale el complemento LiveHttpHeaders . Este complemento le permitirá navegar manualmente por el sitio y capturar las URL que se navegan junto con las cookies que se pasan durante su navegación manual. Eso es lo que necesita su scraperbot para enviar una solicitud para obtener una respuesta válida de los servidores web de destino. Esto también capturará las llamadas ajax que se realicen, y en muchos casos las mismas llamadas ajax deben implementarse en su raspador para obtener las respuestas deseadas.
Tenga en cuenta que la sofisticación de javascript está jugando con el modelo de DOM interno de la página del navegador, y no hace nada con el HTML sin formato.
Usar HtmlUnit también es una posibilidad.
HtmlUnit es un "navegador GUI-Less para programas Java". Modela documentos HTML y proporciona una API que le permite invocar páginas, completar formularios, hacer clic en enlaces, etc., tal como lo hace en su navegador "normal".
Tiene un soporte de JavaScript bastante bueno (que mejora constantemente) y puede funcionar incluso con bibliotecas AJAX bastante complejas, simulando Firefox o Internet Explorer según la configuración que desee utilizar.
Por lo general, se usa con fines de prueba o para recuperar información de sitios web.
Mozenda es una gran herramienta para usar también.