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

API standards et tierces Java Discussion :

[Parser-html] Parser une partie d'une page html


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de Ceddoc
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 493
    Par défaut [Parser-html] Parser une partie d'une page html
    Bonjour,

    Je dois parser une page html pour en extraire certaines données, jusque la, tout va bien. Après avoir fais des recherches j'ai opté pour htmlparser qui me semblait être le plus simple et le plus efficace.
    J'ai fait mon parser, avec mon nodeFilter, aucun problème, tout marche bien, j'ai put extraire mes données.

    Mais après avoir fait un peu de profiling, je me suis rendu compte que l'opération prenait beaucoup (trop) de temps et que c'était la cause de la plupart des ralentissement de mon application.
    Les conclusions que j'en ai tirés sont que le parser met trop de temps a parcourir toute la page (très longue) et a filtrer les node qui m'intéresse.

    Donc je souhaiterais savoir si quelqu'un connaîtrais un moyen de stopper le parser lorsque l'information est trouvée ou un autre parser (peut être nekoHtml) qui serait plus efficace ou que je pourrais configurer pour que le parsage ne dure pas autant longtemps.

    Je suis donc sous java 1.6 et voici le bout de code qui nous intéresse et que j'utilise actuellement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    final Parser parser = new Parser(url.openConnection())
    final TestsInfos infos = new TestsInfos();
            final NodeList nl = parser.parse(new NodeFilter() {
     
                @Override
                public boolean accept(final Node node) {
                    if (!(node instanceof TableRow)) {
                        return false;
                    }
                    final TableRow row = (TableRow) node;
                    if ("mon attribut".equals(row.getAttribute("class"))) {
                        return true;
                    }
                    return false;
                }
     
            });
    merci d'avance

  2. #2
    Membre chevronné Avatar de Ceddoc
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 493
    Par défaut
    Désolé de relancer, mais personne ne pourrait me mettre sur la voie?

    Pas même une petite idée?

  3. #3
    Membre chevronné Avatar de Ceddoc
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 493
    Par défaut
    Bon ben vu que personne ne me proposait de solution je me suis débrouillé en bidouillant par moi même.

    J'ai récupérer la page html sous forme de String et je l'ai découpé pour avoir la partie qui m'intéresse et pouvoir la parser par la suite. Je met le code si ça peut aider certains

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    String toreturn = null;
    		final URLConnection uc = url.openConnection();
    		final InputStream in = uc.getInputStream();
    		int c = in.read();
    		final StringBuilder build = new StringBuilder();
    		while (c != -1) {
    			build.append((char) c);
    			c = in.read();
    		}
    		toreturn = build.toString();
     
    		final String uneChaine = toreturn.substring(4500, 9900);
    		final Parser parser = new Parser();
    	        parser.setInputHTML(uneCHaine);
    		final NodeList nodelist = parser.parse(new NodeFilter() {....
    Je laisse en non résolu le temps de voir si quelqu'un a quelque chose de plus propre à me proposer.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/04/2008, 12h14
  2. Sélectionner seulement une partie d'une valeur d'une cellule
    Par ArthurO0O dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2007, 11h05
  3. masquer une partie d'une vidéo par une banniere
    Par lezabour dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 16/10/2006, 16h47
  4. copier une partie d'une image vers une autre
    Par gregcat dans le forum Langage
    Réponses: 1
    Dernier message: 14/04/2006, 13h39
  5. [HTML] Rafraichir uniquement une partie d'un page html
    Par andlio dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 13/03/2006, 15h40

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