IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Récupérer le code HTML complet


Sujet :

Servlets/JSP Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Récupérer le code HTML complet
    Bonjour,


    J'aimerai récupérer le code source "complet" d'une page. J'ai essayé avec la classe URLConnection mais ce n'est pas ce que je veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     URL myurl = new URL("http://www.myurl.com");
            URLConnection yc = yahoo.openConnection();
            BufferedReader in = new BufferedReader(
                                    new InputStreamReader(
                                    yc.getInputStream()));
            String inputLine;
     
            while ((inputLine = in.readLine()) != null) 
                System.out.println(inputLine);
            in.close();
    Avec ça je récupère ce que je peux voir en faisant CTRL+U dans mon navigateur mais ce que je voudrais c'est le code que je peux voir via Firebug, pi-debugger, etc.

    Est-ce possible en Java ?


    Merci

  2. #2
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 413
    Points : 1 993
    Points
    1 993
    Par défaut
    Bonjour,

    Tout est en possible en Java.

    Mais quel code désires-tu voir? Précise tes souhaits.
    Bien le bonjour chez vous
    Jowo

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Voilà un exemple de ce que je souhaites récupérer :

    http://www.users.on.net/~clear/ext/index.html

    Comme sur cette page j'ai une arborescence de dossiers en JS. Si je fais un "click droit -> voir le code source", ou si j'utilise le code Java posté plus haut, je vois le code source de la page, mais pas celui de l'arbre en JavaScript.
    Maintenant si je fais "inspecter un élément" via Firebug(sur l'arbre en question), je vois le code html des 'éléments et c'est celui là que j'aimerai récupérer.

    Un exemple du code que je vois avec Firebug et non avec "CTRL+U" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <li class="x-tree-node">
    <div unselectable="on" class="x-tree-node-el x-unselectable  x-tree-node-collapsed x-tree-selected" ext:tree-node-id="xnode-107" id="extdd-127">
    <span class="x-tree-node-indent"><img class="x-tree-icon" src="clear.gif"></span>
    <img class="x-tree-ec-icon x-tree-elbow-plus" src="clear.gif">
    <img unselectable="on" class="x-tree-node-icon" src="clear.gif" id="extdd-128">
    <a tabindex="1" href="" class="x-tree-node-anchor" hidefocus="on">
    <span unselectable="on" id="extdd-129">Chapter 5</span>
    </a></div><ul style="display: none;" class="x-tree-node-ct"></ul></li>
    J'aimerai donc récupérer le code de l'arborescence présente sur ma page afin de le parser pour le réutiliser plus tard.

  4. #4
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 413
    Points : 1 993
    Points
    1 993
    Par défaut
    Ce qu'affiche Firebug, c'est l'arborescence du DOM de ta page HTML.

    En java, il faut parser le code HTML pour créer le DOM puis exécuter le code Javascript qui va peut être modifier le DOM créé.

    Peu-ton connaître les motifs de ton besoin?
    Bien le bonjour chez vous
    Jowo

  5. #5
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Merci de la réponse.

    Sur ma JSP j'ai un arbre identique à ceux de cette page (http://www.users.on.net/~clear/ext/index.html) qui représente ma base de données. L'utilisateur peut déplacer des éléments dans cet arbre en JavaScript et une fois qu'il valide j'aimerai enregistrer les changements dans la bdd.

    L'idée est donc de récupérer le code que je peux voir sous Firebug, puisqu'il contient toutes les données dont j'ai besoin (nom de l'élément, position dans le dossier, id de l'élément, etc), et de parser ce code pour effectuer les modifications sur la bdd.

    J'ai pensé à le faire via le .js mais dans celui-ci je ne possède pas autant d'informations que dans le code html. (Je n'ai pas accès aux noms des éléments puisque ceux-ci sont créés à partir d'un .json créé lui-même en fonction de la base de données)
    Ce qui m'intéresse c'est vraiment le code html "actuel" que l'utilisateur voit sur sa page.

  6. #6
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut
    Si je comprends bien, tu souhaites faire quelque chose d'analogue à récupérer des informations situées sur un site externe pour les insérer dans ta base de données?

    Tu n'as pas besoin de faire ça en J2EE. Pour ce genre de besoin il faut rechercher un parser de XML, sachant que la plupart proposent de télécharger la page à parser. Par exemple, il y ala librairie Jericho qui est parfaite pour cet usage, puisqu'il suffit pour récupérer la page de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Source source=new Source(new URL(sourceUrlString));
    , et qu'ensuite, il y a de nombreuses méthodes qui permettent de parser le code de la page comme on veut.

    Par exemple on peut faire un source.getAllElementsByClass("toto").
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut
    Ah oui, et la réponse à ta question de départ est dans la FAQ JSP. Ca tombe bien, non?
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    J'ai testé le librairie Jericho, c'est assez intéressant.

    Le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     URL myUrl = new URL("http://www.myurl.com");
            Source source = new Source(myUrl);
            System.out.println(source.getAllElements());
    me renvoie certes plus d'informations qu'avant mais je ne vois toujours pas ce qui est créé par le JavaScript.
    Je pense que je dois m'orienter vers un script qui renvoie le code de la page justement, vu que que le JS s'exécute côté client et que c'est de la page "locale" dont j'ai besoin.
    Avec le code posté ci-dessus j'obtiens toutes les informations sauf ce qui est généré par le .js =/.

    Firebug "voit" le code html créé par le JavaScript et c'est ça que je voudrais récupérer si ça peut aider à me faire comprendre.

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Aldian Voir le message
    Ah oui, et la réponse à ta question de départ est dans la FAQ JSP. Ca tombe bien, non?
    Ce n'est pas vraiment ce qu'il cherche.

    Si je comprends bien, tu voudrais récupérer le contenu du document après interprétation du navigateur des fonctions javascript (qui peuvent générer du contenu dynamiquement), en d'autre termes, après "onload".
    C'est bien ça ?
    (ce que fait le plugin Web Developer -> Voir Source -> Voir le code source généré)

    Je pense que le plus simple serait de passer par une JSP contenant un <iframe> et d'en extraire le source par javascript (DOM).
    Maintenant, si ça doit se faire côté serveur, ça risque de ce compliquer...
    Mais en mixant avec URLConnection et en générant un formulaire (POST) pour appeler une servlet qui elle enregistrera le contenu où tu veux...
    J'suis clair ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Ce n'est pas vraiment ce qu'il cherche.
    Si je comprends bien, tu voudrais récupérer le contenu du document après interprétation du navigateur des fonctions javascript (qui peuvent générer du contenu dynamiquement), en d'autre termes, après "onload".
    C'est bien ça ?
    (ce que fait le plugin Web Developer -> Voir Source -> Voir le code source généré)
    Oui, c'est exactement ça. Récupérer le code tel que Firebug/Web Developer le voit après "onload" si c'est comme ça qu'on dit.

    Citation Envoyé par OButterlin Voir le message
    Je pense que le plus simple serait de passer par une JSP contenant un <iframe> et d'en extraire le source par javascript (DOM).
    Maintenant, si ça doit se faire côté serveur, ça risque de ce compliquer...
    Mais en mixant avec URLConnection et en générant un formulaire (POST) pour appeler une servlet qui elle enregistrera le contenu où tu veux...
    J'suis clair ?
    C'est ça je pense, un script qui extrait le code source, l'envoie à une JSP (POST) et le traitement côté serveur ne devrait pas poser de problèmes.
    C'est techniquement possible de récupérer ce code source en JavaScript ? (J'y connais pas grand chose en JS =x)

  11. #11
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Problème réglé .

    Pour ceux que ça intéresse j'ai utilisé un serializer en JS (classe qui prend en paramètre le tree et renvoie son architecture au format XML) et une méthode toujours en JS qui traite tous les arbres sur la page. Envoyé tout ça dans un formulaire et un parser en Java s'occupe de vérifier si changements il y a.

    (Voir ici pour le serializer)

    Ca n'a plus rien à voir avec le sujet de base mais bon... problème résolu =).
    Merci OButterlin pour l'idée .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/10/2007, 11h12
  2. récupérer un code html avec php ..
    Par serenity dans le forum Langage
    Réponses: 3
    Dernier message: 17/10/2007, 15h16
  3. [CKEditor] Récupérer le code HTML
    Par PP(Team) dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 15/06/2007, 11h06
  4. récupérer le code html en vb
    Par jayfaze dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/11/2006, 20h18
  5. Récupérer le code HTML d'une page avec Delphi 7
    Par PsyKroPack dans le forum Web & réseau
    Réponses: 5
    Dernier message: 06/02/2003, 21h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo