Publié le 10/09/2010
Auteur Axel
Réseaux sociaux
0 partages
0 tweets
0 plus
1 commentaires

Charger et extraire les liens d'une page HTML

Comment trouver les liens dans une page HTML ou du point de vue technique comment extraire le texte contenu entre les balises href ? Voici une solution qui utilise l'objet HTMLEditorKit de JAVA qui va parcourir la page internet et retourner une liste de lien.

Lister les liens d'une page internet

Pour lister les liens sur la balise href, nous allons utiliser les méthodes suivantes:
- charger une page HTML avec URLConnection,
- lire le document dans HTMLEditorKit,
- parcourir les balises pour extraire les liens.
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.net.URLConnection;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.text.BadLocationException;
import javax.swing.text.EditorKit;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.html.HTML;
import javax.swing.text.html.HTMLDocument;
import javax.swing.text.html.HTMLEditorKit;
 
/**
 * Extraire les liens d'un document HTML
 */
public class LinkExtract {
 
    public static void main(String[] args) {
        try {
            //Charger la page
            URL url = new URL("http://www.fobec.com");
            URLConnection uconnection = url.openConnection();
            Reader rd = new InputStreamReader(uconnection.getInputStream());
            //lire le document HTML
            EditorKit kit = new HTMLEditorKit();
            HTMLDocument doc = (HTMLDocument) kit.createDefaultDocument();
            doc.putProperty("IgnoreCharsetDirective", new Boolean(true));
            kit.read(rd, doc, 0);
            //Parcourir la balise lien
            HTMLDocument.Iterator it = doc.getIterator(HTML.Tag.A);
            while (it.isValid()) {
                SimpleAttributeSet s = (SimpleAttributeSet) it.getAttributes();
                String link = (String) s.getAttribute(HTML.Attribute.HREF);
                if (link != null) {
                    //Afficher le lien trouvé
                    System.out.println(link);
                }
                it.next();
            }
        } catch (BadLocationException ex) {
            Logger.getLogger(LinkExtract.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(LinkExtract.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

Pour l'exemple, les liens sont simplement affichés dans la console JAVA. A l'execution de la class LinkExtract, on obtient les liens trouvés sur la page d'accueil
http://www.fobec.com
http://www.fobec.com/apps/
http://www.fobec.com/forum/
http://www.fobec.com/news/
http://www.fobec.com/delphi/
http://www.fobec.com/java/
http://www.fobec.com/php5/
http://www.fobec.com/tuto/
http://www.fobec.com/logiciel/
javascript:void(0)
...

Attention: l'url à analyser a été définit en dur à la ligne 29. Pour que l'exemple fonctionne, veuillez la remplacer par l'URL de la page dont on veut extraire les liens.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.
avatar mido

Publié par mido

le 12/07/2012 à 21:27:32

si je veut extraire les liens a partir de google searche c'est a dire utiliser la raquette suivante "http://www.google.tn/search?q=" avec java bien sur ..merci d'avance :)

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
java - sources
Mise a jour
10/09/2010
Visualisation
vu 4252 fois
Public
Internaute
Auteur de la publication
Axel
Membre junior
Auteur de 51 articles
|BIO_PSEUDO|
Commentaires récents

Publié par Romaingineer dans tuto

Question un peu similaire celle de nicolasterraes.

Je ne trouve pas de ligne dans wpcontentthemes, j'en trouve 2 ou trois dans WP includes mais qui utilsent la fonction echo...

Du coup...

Publié par max dans java

est que ce framework fonctionne pour une application web ?

Publié par farid dans CMS

formation delphi 7

Publié par nicolasterraes dans tuto

bonjour,
je ne comprends pas cette tape:

Les liens vers les feuilles de style et les fichier js sont declares dans les pages HTML. Modifiez les balises meta ainsi:
Feuille de style:
d...

Publié par pat59 dans CMS

j espere que le jeu vas fonctionner car vous le donnez mais il est bloqué snifff