8
votes

Htmlunit - convertir un htmlpage en chaîne HTML?

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.

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?

Merci!


0 commentaires

6 Réponses :


6
votes

Je ne suis pas certain à 100%, j'ai compris la question correctement, mais peut-être que cela abordera votre problème:

page.getwebreSponse (). GetContemponString ()


1 commentaires

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.



10
votes

page.Asxml () retournera le HTML. page.Astext () Retourne qu'il a rendu simplement sur le texte.


1 commentaires

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.



0
votes

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.

page.getbebesponse (). GetContemponString ()

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.

page.Asxml () retournera le HTML. page.Astext () renvoie qu'il a rendu juste du texte.

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.


0 commentaires

0
votes

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();
        }


0 commentaires

1
votes

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());


0 commentaires

0
votes

Voici ma solution qui fonctionne pour moi: xxx


0 commentaires