J'utilise HTMlunit pour générer le code HTML pour différentes pages, mais en ce moment, le meilleur que je puisse faire pour obtenir la page dans le HTML brut que le serveur renvoie est de convertir le HTMLPage en une chaîne XML. P >
Ceci est un peu ennuyant car la sortie XML est rendue par des navigateurs Web différemment du WHTML RAW. Existe-t-il un moyen de convertir un HTMLPage en HTML RAW au lieu de XML? P>
Merci! P>
6 Réponses :
Je ne suis pas certain à 100%, j'ai compris la question correctement, mais peut-être que cela abordera votre problème: P>
page.getwebreSponse (). GetContemponString () P>
GetWebEbesponse () renvoie la page d'origine, sans les modifications apportées par des scripts. ASXML () et ASTEXT () est une meilleure solution pour obtenir la dernière page.
page.Asxml () code> retournera le HTML.
page.Astext () Code> Retourne qu'il a rendu simplement sur le texte. P>
Voulez-vous simplement confirmer que cela ne renvoie que le texte dans les nœuds de texte et n'inclut pas les balises et leurs attributs.
Je ne connais pas la réponse à la réponse d'un commutateur Type de page et pour XMLPage et SGMLPAGE, il faut faire un innerhtml sur l'élément HTML et écrire manuellement les attributs. Pas élégant et exact (il manque le doctype) mais ça marche. P>
Ceci est incorrect car il renvoie la forme de texte de l'original interdisant, aucun octets JS. Si JavaScript exécute et change de choses, cette méthode ne verra pas les modifications. P>
page.Asxml () retournera le HTML. page.Astext () renvoie qu'il a rendu juste du texte. strong> p>
Voulez-vous simplement confirmer que cela ne renvoie que le texte dans les nœuds de texte et n'inclut pas les balises et leurs attributs. Si vous souhaitez prendre le code HTML complet, ce n'est pas la bonne énorme. P>
Peut-être que vous voulez aller avec quelque chose comme ça, au lieu d'utiliser les méthodes du framework HTMLunit:
try (InputStreamReader isr = new InputStreamReader(url.openConnection().getInputStream()); BufferedReader br = new BufferedReader(isr);){ String line =""; String htmlSource =""; while((line = br.readLine()) != null) { htmlSource += line + "\n"; } return htmlSource; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
Je pense qu'il n'y a pas de moyen direct d'obtenir la dernière page en tant que HTML. ASXML () renvoie le résultat en tant que XML, ASTEXT () renvoie le contenu du texte extrait.
Le meilleur que vous puissiez faire est d'utiliser ASXML () et "Transformer" IT en HTML: P>
// return the snapshot out.println(page.asXml());
Voici ma solution qui fonctionne pour moi: