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

Langage Java Discussion :

Extraire d'un fichier HTML


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Extraire d'un fichier HTML
    Bonjour,

    Voila mon problème:
    Je dois extraire de cette page les noms des pathways dispo ainsi que l'url vers le fichier xml associé (genre Glycolysis / Gluconeogenesis; http://www.genome.jp/kegg/KGML/KGML_.../map00010.xml).

    Pour l'instant ce que j'ai fait (un peu en bricolant avec String) c'est de lire le fichier html ligne par ligne, et si la ligne m'intéresse récupérer l'info qui m'intéresse. C'est pas super propre et en plus si la page HTML change de structure (ne serait-ce qu'un saut de ligne) mon code pourrait ne plus fonctionner.

    Solution -> Parser le fichier HTML avec Swing
    Le soucis c'est que je n'y arrive pas... Ca me met l'exception: javax.swing.text.ChangedCharSetException (ca semble du à
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    dans le code html. Bref j'ai cherché et trouvé une solution: créer un HTMLDocument et y appliquer putProperty("IgnoreCharsetDirective", new Boolean(true));
    Seulement maintenant que faire de ce document pour que je puisse le parser!

    Si vous avez déjà fait ca j'suis preneur d'un bout de code parce que la je trouve vraiment pas comment faire
    Bon c'est sur que je pourrais utiliser une API genre Jericho HTML parser mais c'est tellement un truc tout con ce que j'ai besoin de faire que j'ai pas trop envie d'importer une API juste pour ca...

    Merci bien
    Dernière modification par Invité ; 08/06/2007 à 17h42.

  2. #2
    Membre averti Avatar de mathieumadrid
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 39
    Par défaut
    Salut,

    Essaye ceci en faisant java HTMLParser taPage.html.

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    import java.io.*;
    import java.util.*;
    import java.util.regex.*;
     
    public class HTMLParser
    {
    	// Fichier HTML.
    	public String fichier;
    	// Noms.
    	public LinkedList noms;
    	// Adresses.
    	public LinkedList adresses;
    	// Lignes du fichier.
    	StringBuffer lignes;
     
    	public HTMLParser(String fichier)
    	{
    		this.fichier = fichier;
    		noms = new LinkedList();
    		adresses = new LinkedList();
    		lignes = new StringBuffer();
    	}
     
    	public void execute()
    	{
    		try
    		{
    			BufferedReader flotFiltre = new BufferedReader(new FileReader(fichier));
    			String ligne;
     
    			while((ligne = flotFiltre.readLine()) != null)
    				lignes.append(ligne);
     
    			flotFiltre.close();
    		}
    		catch(IOException ex){}
     
    		Pattern pat1 = Pattern.compile("<a href=\"([^x]+xml)\"");
    		Pattern pat2 = Pattern.compile("<td nowrap=\"nowrap\">&nbsp;&nbsp;[^<]+</td>[^<]+<td nowrap=\"nowrap\">&nbsp;&nbsp;([^<]+)</td>");
    		Matcher mat1 = pat1.matcher(lignes.toString());
    		Matcher mat2 = pat2.matcher(lignes.toString());
     
    		while(mat2.find())
    			noms.add(mat2.group(1));
     
    		while(mat1.find())
    			adresses.add(mat1.group(1));
    	}
     
    	public void afficher()
    	{
    		for(int i = 0; i < noms.size(); ++i)
    			System.out.println("(" + noms.get(i) + ";" + adresses.get(i) + ")");
    	}
     
    	public static void main(String[] args)
    	{
    		HTMLParser p = new HTMLParser(args[0]);
    		p.execute();
    		p.afficher();
    	}
    }

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci bien
    Ca marche parfaitement! Déjà beaucoup mieux que ma précédente solution!



    Bon maintenant va falloir que j'explique pourquoi j'ai pas utiliser le parser HTML Swing!

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/01/2010, 22h30
  2. Extraire certaines données d'un fichier HTML
    Par Sancti_Eyes dans le forum Langage
    Réponses: 4
    Dernier message: 06/08/2009, 13h52
  3. Extraire valeur dans fichier txt (avec balise html)
    Par Cirrus dans le forum Général VBA
    Réponses: 4
    Dernier message: 08/03/2009, 19h17
  4. [Débutante] Extraire des données à partir d'un fichier html avec xsl
    Par sab_etudianteBTS dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 11/03/2008, 09h10
  5. extraire un bout d'html d'un fichier
    Par wildmary dans le forum ANT
    Réponses: 1
    Dernier message: 07/08/2007, 10h54

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