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 2831 fois
Public
Internaute
Auteur de la publication
Axel
Membre junior
Auteur de 51 articles
|BIO_PSEUDO|
Commentaires récents

Publié par Fobec dans tuto

Bonjour,

Sur Fobec.com, nous utilisons mod_expires.c pour envoyer automatiquement un code 304 au navigateur internet.
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType im...

Publié par mohamed dans php5

code comment publier tous les ficher en php5 et html5

Publié par Tchatche dans news

Salut a tous,
@ Outsourcing je suis tout a fait d'accord avec toi que le Pagerank d'un site (ou page) n'est pas un gage de bonnes positions sur Google,on peut tous citer des sites ay...

Publié par rsuinux dans php5

Merci pour cet article.
Cela m'a debloque pour sqlite3 sur openwrt :)
Cordialement.

Publié par Christof dans CMS

Je pense qu'il y a un problème au niveau de l'affectation du longint "Color" dans la
variable de type byte "r". A mon avis, cela risque de provoquer une erreur de
vérifi...