2010-04-19 9 views
18

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 saca el árbol DOM que es similar al resultado en la ventana HTML de Firebug. El mejor ejemplo es Kayak.com donde no se puede ver el DOM resultante que se muestra en el navegador cuando se ve 'fuente', pero se puede guardar el HTML resultante a través de Firebug.rastreador web que puede interpretar JavaScript

¿Cómo voy a ir haciendo esto? ¿Qué herramientas existen que me ayuden?

+3

Puede usar Webkit. – Seth

+15

Cool. ¿Cuál es tu pregunta? –

+0

Estoy buscando escribir un rastreador web que pueda ejecutar código JavaScript en la página que estoy tratando de rastrear. Por ejemplo, algunas páginas tienen código JavaScript para llenar la página con datos de una llamada AJAX o de una matriz de JavaScript. Si abre estas páginas en Firefox y hace clic en Ver -> 'Origen de la página', no verá el DOM HTML completo que ve en la ventana del navegador.Pero si tiene Firebug Plugin instalado, puede abrir firebug, hacer clic en la pestaña HTML, hacer clic con el botón derecho en en la ventana de depuración y hacer clic en "Copiar HTML" y pegarlo en un editor de texto, verá el HTML DOM generado por el código JavaScript . – user320662

Respuesta

2

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 utiliza en muchas aplicaciones Java existentes para proporcionar la capacidad de escritura de JavaScript dentro de la aplicación. También he escuchado que solía ayudar a realizar pruebas automatizadas en Javascript.

También sé que Java incluye código que puede analizar y representar HTML, aunque alguien que sabe más sobre Java que yo probablemente pueda aconsejar más sobre eso. No niego que sería muy difícil lograr algo como esto; esencialmente estarías reimplementando mucho de lo que hace un navegador.

+0

hola thomasrutter, gracias por el puntero pero supongo que rhino es un motor de JavaScript y probablemente necesito construir un prototipo de navegador usando Rhino como motor de JavaScript para rastrear una página de JavaScript. Corrígeme si estoy equivocado – user320662

+0

Java también incluye capacidades de análisis/renderización de HTML. Alguien que sepa más sobre Java que yo podría ser capaz de aconsejar mejor con eso, mi conocimiento termina aquí. – thomasrutter

5

He estado usando HtmlUnit (Java). Esto fue diseñado originalmente para páginas de pruebas unitarias. No es un javascript perfecto, pero no me ha fallado en mi uso limitado. Según el sitio, se puede ejecutar las siguientes marcos JS con un grado razonable:

  • jQuery 1.2.6
  • MochiKit 1.4.1
  • GWT 2.0.0
  • Sarissa 0.9.9.3
  • MooTools 1.2.1
  • Prototype 1.6.0
  • Ext JS 2.2
  • Dojo 1.0.2
  • YUI 2.3.0
+0

¿Tienes que saber java para usarlo con un script php? –

+0

Tienes que usar Java con él. Aunque puedes intentar usar una solución basada en selenio para PHP. – Jeff

6

Ruby Capybara es una biblioteca de prueba de integración, pero también puede ser usado para escribir independiente web- rastreadores. Dado que se utiliza backends como el selenio o WebKit sin cabeza, que interpreta javascript fuera de la caja:

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) 
1

Dar un vistazo aquí: http://snippets.scrapy.org/snippets/22/ es una captura de imágenes de pitón y la web marco de rastreo se utiliza con webdrivers que se abren una página, renderice todas las cosas que necesita y le da la posibilidad de "capturar" cualquier cosa que desee en la página a través de

Cuestiones relacionadas