javascript - crawler - node js web scrap
Rastreador web que puede interpretar JavaScript (5)
Quiero escribir un rastreador web que pueda interpretar JavaScript. Básicamente es un programa en Java o PHP que toma una URL como entrada y genera el árbol DOM, que es similar a la salida en la ventana HTML de Firebug. El mejor ejemplo es Kayak.com, donde no puede ver el DOM resultante en el navegador cuando ''ve la fuente'', pero puede guardar el HTML resultante a través de Firebug.
¿Cómo voy a hacer esto? ¿Qué herramientas existen que me ayuden?
Eche un vistazo aquí: http://snippets.scrapy.org/snippets/22/ es un marco de raspado de pantalla y rastreo de web en python que se utiliza con webdrivers que abre una página, muestra todas las cosas que necesita y le brinda la posibilidad de "capturar "Todo lo que quieras en la página via
Es más probable que tenga éxito en Java que en PHP. Hay un intérprete de Javascript preexistente para Java llamado Rhino . Es una implementación de referencia, y bien documentada.
Rhino se usa en muchas aplicaciones Java existentes para proporcionar la capacidad de scripting de Javascript dentro de la aplicación. También he oído hablar de él para ayudar a realizar pruebas automatizadas en Javascript.
También sé que Java incluye código que puede analizar y representar HTML, aunque alguien que sepa más de Java que yo probablemente pueda recomendar más sobre eso. No lo niego sería muy difícil lograr algo como esto; Básicamente, estarías reimplementando mucho de lo que hace un navegador.
He estado usando HtmlUnit (Java). Esto fue diseñado originalmente para páginas de prueba de unidad. No es un javascript perfecto, pero no me ha fallado en mi uso limitado. Según el sitio, puede ejecutar los siguientes marcos JS en un grado razonable:
- jQuery 1.2.6
- MochiKit 1.4.1
- GWT 2.0.0
- Sarissa 0.9.9.3
- MooTools 1.2.1
- Prototipo 1.6.0
- Ext JS 2.2
- Dojo 1.0.2
- YUI 2.3.0
Podrías usar el motor de renderizado de Mozilla Gecko:
Ruby''s Capybara es una biblioteca de prueba de integración, pero también se puede utilizar para escribir rastreadores web independientes. Dado que utiliza backends como Selenium o WebKit sin cabeza, interpreta javascript de forma inmediata:
require ''capybara/dsl''
require ''capybara-webkit''
include Capybara::DSL
Capybara.current_driver = :webkit
Capybara.app_host = "http://www.google.com"
page.visit("/")
puts(page.html)