ultimate the scraping parser node guide example cherrio javascript html dom screen-scraping

the - Screen Scraping de una página web con mucho Javascript



web scraping javascript example (7)

Como dice que no se utiliza AJAX, toda la información está presente en la fuente HTML. El javascript solo lo representa en función de los clics de los usuarios. Por lo tanto, debe aplicar ingeniería inversa en la forma en que funciona la aplicación, analizar el código html y el código javascript y extraer la información útil. Es estrictamente un negocio de análisis de texto, no debes lidiar con ejecutar javascript y producir un nuevo DOM. Esto sería mucho más difícil de hacer.

Si se usara AJAX, su trabajo sería más fácil. Puede descubrir fácilmente cómo funcionan los servicios AJAX (probablemente al recibir JSON y XML) y extraer la información.

Se me ha pedido que escriba una aplicación que elimine la información de la pantalla de una página web de la intranet y presente la información determinada en un formato agradable y fácil de ver. La página web es un verdadero lío y requiere que el usuario haga clic en media docena de iconos para descubrir si un artículo pedido ha llegado o se ha recibido. Como puede imaginar, a los usuarios les resulta irritante por lo menos, y sería bueno tener una aplicación que cualquiera pueda usar que muestre el estado de sus pedidos en una sola pantalla.

Sí, sé que una mejor solución sería volver a escribir la aplicación web, pero eso implicaría llamar al proveedor y nos costaría una pequeña fortuna.

De todos modos, mientras miraba esto, descubrí que la página web que quiero raspar es principalmente Javascript (aunque no utiliza ninguna técnica AJAX). ¿Alguien sabe si existe una biblioteca o programa que podría alimentar con Javascript y que luego escupiría el DOM para que mi aplicación analice?

Casi puedo escribir la aplicación en cualquier idioma, pero mi preferencia sería JavaFX solo para poder jugar con ella.

Gracias por tu tiempo.

Ian


Estoy de acuerdo con la respuesta de kgiannakakis . Me sorprendería si no pudiera aplicar ingeniería inversa al javascript para identificar de dónde proviene la información y luego escribir algunos scripts de Python simples utilizando Urllib2 y la biblioteca Beautiful Soup para eliminar la misma información.

Si Python y el raspado son una idea nueva, hay algunos excelentes tutorials disponibles sobre cómo comenzar.

[Editar] Parece que también hay una versión Python de mecanizar . ¡Hora de volver a escribir algunos raspadores que desarrollé hace un tiempo! :-)


Me gustaría utilizar Win32::IE::Mechanize Perl, que le permite automatizar Internet Explorer. Debería poder hacer clic en los íconos y extraer texto mientras permite que MSIE realice las molestas tareas de procesar todo el JS.


Podrías considerar usar una greasemonkey JS. greasemonkey es un complemento de Firefox muy poderoso que le permite ejecutar su propio script junto con el de sitios web específicos. Esto le permite modificar la forma en que se muestra el sitio web, agregar o eliminar contenido. Incluso puede usarlo para hacer búsquedas de estilo AJAX y agregar contenido dinámico.

Si su herramienta es para uso interno y los usuarios están contentos de usar Firefox, entonces esto podría ser un ganador.

Saludos


Puede considerar el uso de HTMLunit. Es una biblioteca de clases java creada para automatizar la navegación sin tener que controlar un navegador, e integra el motor de JavaScript de Mozilla Rhino para procesar javascript en las páginas que carga. También hay un envoltorio JRuby para eso, llamado Celerity. Su compatibilidad con javascript no es realmente perfecta en este momento, pero si sus páginas no usan muchos hacks, las cosas deberían funcionar bien, el rendimiento debería ser mucho mejor que controlar un navegador. Además, no tiene que preocuparse por la persistencia de las cookies después de que finalice su raspado y todas las otras cosas desagradables relacionadas con el control de un navegador (historial, autocompletado, archivos temporales, etc.).


Te sugiero IRobotSoft web scraper. Es un software gratuito dedicado para raspar la pantalla con el mejor soporte de javascript. Puedes crear y probar un robot con su interfaz visual. También puede incrustarlo en su propia aplicación utilizando su control ActiveX y ocultar la ventana del navegador.


site2archive un proyecto site2archive que usa phantomJs para renderizar incluyendo material JS y wget para raspar. phantomJs se basa en Webkit, que ofrece un entorno de navegación similar al de Safari y Google Chrome.