2012-02-02 19 views
5

Necesito obtener el código de una web, que es en parte "HTML puro" y en parte HTML generado con AJAX , JavascriptJava- Cómo obtener el código HTML de una URL incluyendo su código generado AJAX usando Firebug o cualquier biblioteca Java

Dado que la forma más fácil de conseguirlo parece ser usar Firebug, he pensado que debe existir alguna forma de usar Firebug o algún complemento para poder hacerlo desde el código Java.

El problema que tengo es que después de buscar en muchas webs y portales no he encontrado nada.

Cualquiera sabe de algún modo/algún complemento ... lo que hace posible que este código generado por AJAX se mezcle con el HTML estático, como lo hace Firebug?

Gracias y disculpen mi inglés.

+0

No estoy seguro de lo que está preguntando. ¿Esta interpretación suena correcta? ¿Desea usar Java para cargar los contenidos de una URL que contiene cualquier contenido generado dinámicamente que se habría generado si la URL se hubiera cargado utilizando un navegador web? – Aatch

+0

No exactamente; Necesito obtener el código que devuelve, es decir, Firebug, incluido el código generado con AJAX; Si miro el código en un navegador simple, en lugar de, por ejemplo, una tabla generada con AJAX en el "ejemplo" DIV, solo puedo ver el DIV, no el código generado dinámicamente para él. Firebug muestra también este código generado por AJAX. –

+0

Eso es básicamente lo que dije.Cuando haces una fuente de vista, ves el código HTML fuente de la página, Firebug no te muestra la fuente del html, sino la estructura actual del DOM. AJAX y Javascript alteran el DOM, pero Firebug aún puede mostrarle el código fuente "efectivo" de la página en su forma actual. – Aatch

Respuesta

2

Abhijeet está un poco en el camino correcto, pero me voy a tomar el tiempo para explicar cómo los navegadores tratan las páginas web y lo ayudan a comprender por qué su solicitud es tan difícil.

Advertencia Esto es bastante peligroso y estoy manipulando algunos detalles por razones de brevedad y claridad

Un navegador se conecta a un servidor y utiliza HTTP para recuperar la página que ha solicitado. Cuando se descarga esa página, el buscador busca los recursos adicionales a los que se hace referencia en la página y los recupera. A continuación, ejecuta cualquier javascript que encuentre de arriba a abajo, incluidos los scripts a los que se hace referencia. Este javascript puede manipular la página, pero en este punto, el navegador no se preocupa mucho por el código fuente original de la página, habiéndolo internalizado como DOM, o Modelo de Objeto de Documento. Javascript simplemente está manipulando este DOM, ya que el DOM es solo una estructura de árbol, no haciendo ninguna manipulación de código fuente. Como resultado, firebug (o el inspector de webkit) en realidad no muestran el código fuente, muestran una representación del estado actual del DOM.

El problema con su solicitud es que desea utilizar un sistema separado para cargar una url y luego pasar por todo el proceso anterior, desafortunadamente eso requeriría implementar un motor de JavaScript completo, en Java.

Sin embargo, no todo está perdido. HTMLUnit (mencionado por otros), es un navegador que funciona, sin cabeza, escrito en Java, y como tal, puede integrarse en su programa. De hecho, hacer eso está más allá del alcance de esta respuesta, pero la página de inicio es here y la documentación de la API es here.

+0

Sí. Por eso finalmente decidí preguntar al respecto aquí, porque no entendí cómo algo que sería tan útil como este no se implementó aún, al menos no para usarlo como una biblioteca o un complemento. Pero parece realmente no está disponible. –

2

La única forma en que puede hacer esto es olfatear qué se están haciendo todas las solicitudes GET/POST. Por lo tanto, inicie Firebug & para ver qué solicitud GET/POST se está realizando.

Luego puede usar la clase URLConnection para hacer eso en código Java.

También puede intentar usar un navegador sin cabeza como htmlunit.

Cuestiones relacionadas