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

Publié par Tchat dans news

Analyses interessantes.
J'ai constate aussi des comportements etranges de Google concernant les placements des sites sur leurs requetes.
Par contre j'ai remarque que Google ne tient pl...

Publié par dotnet dans php5

Cette interface est intéressant par le fait qu'elle soit universelle, donc son intérêt pour moi est qu'elle permet l'accès aux bases de données Microsoft SQL Server....

Publié par fobec dans logiciel

Bravo, le soft a trouvé quelques 2400 liens sur le site en un temps record.

Publié par fobec dans java

La boucle de lecture est corrigée et prend en compte l'état pause. Sympa d'avoir signaler l'erreur

Publié par romainN dans tuto

Bonjour,

Super tuto bravo! Je suis sur Wordpress 3.5 et 1and1 et la ligne HTML que je dois modifier est prsente dans plusieurs php et elle comprend des echo:

echo \\ dans le fichier wp-...