2012-02-02 4 views
5

Ho bisogno di ottenere il codice da un web, che è in parte "puro HTML" e in parte HTML generato con AJAX , Javascript.Java- Come ottenere il codice HTML da un URL incluso il suo codice generato AJAX usando Firebug o qualsiasi libreria Java

Dal momento che il modo più semplice per ottenere sembra utilizzare Firebug, ho pensato che deve esistere un modo per utilizzare Firebug o qualche plugin per poterlo fare dal codice Java.

Il problema che ho è che dopo aver cercato attraverso molti web e portali non ho trovato nulla.

Qualcuno sa in qualche modo/alcuni plugin ... che rende possibile ottenere questo codice generato AJAX mescolato con l'HTML statico, come fa Firebug?

Grazie e per favore scusa il mio inglese.

+0

Non sono sicuro di cosa stai chiedendo. Questa interpretazione è corretta? Vuoi utilizzare Java per caricare il contenuto di un URL che contiene contenuti generati dinamicamente che sarebbero stati generati se l'URL fosse stato caricato utilizzando un browser web? – Aatch

+0

Non esattamente; Ho bisogno di ottenere il codice che restituisce, ad esempio Firebug, incluso il codice generato usando AJAX; Se guardo il codice in un semplice browser, invece di una tabella generata con AJAX nel DIV "esempio", posso solo vedere il DIV, non il codice generato dinamicamente per esso. Firebug mostra anche questo codice generato da AJAX. –

+0

Questo è fondamentalmente quello che ho detto.Quando si fa un view-source, si vede il codice HTML sorgente della pagina, firebug non mostra la sorgente dell'html, ma la struttura corrente del DOM. AJAX e Javascript alterano il DOM, ma firebug può comunque mostrare il codice sorgente "effettivo" della pagina nella sua forma attuale – Aatch

risposta

2

Abhijeet è sulla buona strada, ma mi prenderò il tempo di spiegare come i browser trattano le pagine web e ti aiutano a capire perché la tua richiesta è così difficile.

Attenzione questo è abbastanza agitato e sto fudging alcuni dettagli per brevità e chiarezza

Un browser si connette a un server e utilizza HTTP per recuperare la pagina che hai richiesto. Quando questa pagina viene scaricata, il browser cerca quindi eventuali risorse aggiuntive a cui fa riferimento nella pagina e le recupera. Esegue quindi qualsiasi javascript trovato in alto-a-basso, inclusi gli script di riferimento. Questo javascript può manipolare la pagina, ma a questo punto, il browser non si cura molto del codice sorgente originale della pagina, dopo averlo interiorizzato come DOM o come modello di oggetto documento. Javascript in realtà sta solo manipolando questo DOM, dal momento che il DOM è solo una struttura ad albero, non sta facendo alcuna manipolazione del codice sorgente. Di conseguenza, firebug (o ispettore webkit) non visualizza effettivamente il codice sorgente, ma visualizza una rappresentazione dello stato corrente del DOM.

Il problema con la richiesta è che si desidera utilizzare un sistema separato per caricare un url, quindi passare attraverso l'intero processo sopra, sfortunatamente ciò richiederebbe l'implementazione di un intero motore javascript, in Java.

Tuttavia, non tutto è perduto. HTMLUnit (menzionato da altri), è un browser funzionante, senza testa, scritto in Java e, come tale, è possibile integrarlo nel programma. Effettivamente ciò va oltre lo scopo di questa risposta, ma la home page è here e la documentazione dell'API è here.

+0

Sì. Ecco perché alla fine ho deciso di chiederlo qui, perché non ho capito come qualcosa che sarebbe così utile come questo non è stato ancora implementato, almeno non per usarlo come libreria o plugin. è davvero non disponibile. –

2

L'unico modo per fare ciò è annusare ciò che vengono fatte tutte le richieste GET/POST. Quindi, avvia Firebug & per vedere quale richiesta GET/POST è stata fatta.

Quindi è possibile utilizzare la classe URLConnection per farlo in codice Java.

Puoi anche provare a utilizzare un browser headless come htmlunit.