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

Java Discussion :

Erreur, Parser : récupérer les liens d'une page html


Sujet :

Java

  1. #1
    Membre actif

    Étudiant
    Inscrit en
    Mai 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 200
    Points : 276
    Points
    276
    Par défaut Erreur, Parser : récupérer les liens d'une page html
    Bonjour,

    J'ai un problème pour récupérer les liens d'un fichier html.

    Alors tout d'abord je récupère le code de la page sur internet à partir de son URL. Ensuite je l'enregistre dans un fichier. Jusque là tout va bien. Ensuite je veux récupérer les liens de cette page et c'est là que ca bloque pour certaines pages seulement (pour certaine ca marche, pour d'autres non !!!!).

    Voici un peu de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class MonParser extends ParserCallback {
     
    	public void handleStartTag(Tag tag, MutableAttributeSet attrSet, int pos) {
    		System.out.println(tag.toString() + attrSet.toString());
     
    	}
     
    }
    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
     
    private MonParser parser = new MonParser();
     
     
     
    				System.out.println("DEBUT");
     
    				/*.......   différents traitements pour recuperer le fichier par son url    */
     
    				// le fichier
    				File fichier = new File(chemin);
     
    				/*.......   différents traitements pour recuperer le fichier par son url    */
     
    				Reader reader = new FileReader(fichier);
    				new ParserDelegator().parse(reader,parser,false);
     
    				System.out.println("FIN");
    Voila pour le code.


    Tout ce passe bien jusqu'a l'appel de ParserDelegator().parse(....);

    Seulement pour certaine page tout va bien ce passé (FIN est affiché normalement). Et pour d'autre page FIN ne s'affiche pas et voila ce qu'il est affiché :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    html
    head
    title
    html_implied_=true
    head_implied_=true
    body_implied_=true

    Donc apparement c'est parce que le document ne serait pas comforme a la dtd je crois...

    J'ai donc regarder à quel endroit dans les pages cela pouvait il bloquer. Et il semblerait que par exemple :

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">

    fait bloquer et il y en a peut être d'autre. (celle ci, c'est sur j'ai testé une page qui ne l'avait pas puis je l'ai rajouté après)

    Voilà j'espère que j'ai été clair en vous exposant mon problème.


    Donc j'aimerais savoir s'il y a un moyen de faire en sorte que ca marche ?????

    Merci, flo

  2. #2
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    Pourquoi ne pas utiliser un parseur XML ?
    En premier lieu, utilisez un moteur de recherche.
    En second lieu, postez sur le forum adéquat !

  3. #3
    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 floflo_2006
    Bonjour,
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    Effectivement, cette balise html (entre autres) pose problème pour un parser XML, il attend la balise de fermeture... qui n'existe pas...

    Si ton tag meta était codé <meta... />, je pense que tu n'aurais pas le problème... mais évidemment, tu ne métrises pas le contenu.

    Regarde plutôt du coté des parser HTML (spécialisés)

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre actif

    Étudiant
    Inscrit en
    Mai 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 200
    Points : 276
    Points
    276
    Par défaut
    Merci pour vos réponses


    OButterlin => j'utilise déjà un parser HTML
    J'utilise javax.swing.text.html......


    Sinon je ne connais pas comment fonctionne les parsers XML en java mais je vais regarder dans la doc et voir si ca bloque ou non de cette manière

    Si quelqun a d'autres solutions elles sont les bien venues

    Merci

  5. #5
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    Autant pour moi je n'avais pas bien lu. C'est le problème du HTML : on peut écrire n'importe quoi ; en effet avec un parseur XML, le problème est qu'il va chercher une balise fermant le meta, sans la trouver (normalement, meta est un élément vide...) : donc, document non accepté (mal formé).
    En premier lieu, utilisez un moteur de recherche.
    En second lieu, postez sur le forum adéquat !

  6. #6
    Membre expérimenté
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Points : 1 464
    Points
    1 464
    Par défaut
    Bonsoir floflo_2006,
    regarde le parser HTML Jericho sur http://jerichohtml.sourceforge.net/doc/index.html

    Tu as un exemple sur http://jerichohtml.sourceforge.net/s...cificTags.java
    qui te montre comment recuperer des elements pour un tag specific.

    Ex : pour recuperer les elements <H2> d'un source HTMl, tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String sourceUrlString = "monFichier.html"
    Source source=new Source(new URL(sourceUrlString));
    source.findAllElements(Tag.H2)
    J'espere que ca pourra t'aider

    Angelo

Discussions similaires

  1. RegEx pour extraire les liens d'une page html
    Par herch dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 13/05/2009, 17h26
  2. Récupérer tous les liens d'une page html
    Par lapras123 dans le forum C
    Réponses: 28
    Dernier message: 08/08/2006, 11h30
  3. Réponses: 7
    Dernier message: 14/09/2005, 10h50
  4. réinitialiser les liens d'une page html
    Par sisco dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/11/2004, 16h03

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