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

Publié par fobec dans tuto

Pour le script fonctionne, renseigner les constantes $SITE_PATH et $CACHE_PATH. Remplacer les valeurs avec les chemins de son propre site.

Publié par RIJAPOTAK dans CMS

PILOTAGE SCANNER (TWAIN-WIA), IPTC, EXIF, METADATA, ICC PROFILES, Développement des logiciels, Traitement d'image, Traitement en Batch d'image et Pdf

Publié par MasterMbg dans java

Salut! merci pour le code, si tu y ajoutais des commentaires avant chaque module ce serait encore plus facilitant! merci infiniment...

Publié par BIBAK dans CMS

merci infiniment, ce sont des beau icons::: :)

Publié par Pierrot dans CMS

Je présume que c'est plutot application.terminate;, le clavier à fourcher, ça m'arrive souvent.
@+