Premiers pas avec Jsoup

Extrayez les URL et les titres des liens

Jsoup peut être utilisé pour extraire facilement tous les liens d’une page Web. Dans ce cas, nous pouvons utiliser Jsoup pour extraire uniquement les liens spécifiques que nous voulons, ici, ceux dans un en-tête h3 sur une page. Nous pouvons également obtenir le texte des liens.

Document doc = Jsoup.connect("http://stackoverflow.com").userAgent("Mozilla").get();
for (Element e: doc.select("a.question-hyperlink")) {
    System.out.println(e.attr("abs:href"));
    System.out.println(e.text());
    System.out.println();
}

Cela donne la sortie suivante :

http://stackoverflow.com/questions/12920296/past-5-week-calculation-in-webi-bo-4-0
Past 5 week calculation in WEBI (BO 4.0)?

http://stackoverflow.com/questions/36303701/how-to-get-information-about-the-visualized-elements-in-listview
How to get information about the visualized elements in listview?

[...]

Qu’est-ce qu’il se passe ici:

  • Tout d’abord, nous obtenons le document HTML à partir de l’URL spécifiée. Ce code définit également l’en-tête de l’agent utilisateur de la demande sur “Mozilla”, afin que le site Web serve la page qu’il servirait habituellement aux navigateurs.

  • Ensuite, utilisez select(...) et une boucle for pour obtenir tous les liens vers les questions Stack Overflow, dans ce cas les liens qui ont la classe question-hyperlink.

  • Imprimez le texte de chaque lien avec .text() et le href du lien avec attr("abs:href"). Dans ce cas, nous utilisons abs: pour obtenir l’URL absolue, c’est-à-dire. avec le domaine et le protocole inclus.

Extraire l’URL complète du HTML partiel

Sélectionner uniquement la valeur d’attribut d’un lien : href renverra l’URL relative.

   String bodyFragment = 
          "<div><a href=\"/documentation\">Stack Overflow Documentation</a></div>";


    Document doc = Jsoup.parseBodyFragment(bodyFragment);
    String link = doc
            .select("div > a")
            .first()
            .attr("href");
    
    System.out.println(link);

Production

/documentation

En passant l’URI de base dans le parse et en utilisant la méthode méthode absUrl au lieu de attr, nous pouvons extraire l’URL complète.

    Document doc = Jsoup.parseBodyFragment(bodyFragment, "http://stackoverflow.com");
    
    String link = doc
                .select("div > a")
                .first()
                .absUrl("href");
    
    System.out.println(link);

Production

https://www.wikiod.com/fr/docs/

Extraire les données du fichier de document HTML

Jsoup peut être utilisé pour manipuler ou extraire des données d’un fichier local contenant du HTML. filePath est le chemin d’un fichier sur le disque. ENCODING est le nom du jeu de caractères souhaité, par ex. “Windows-31J”. C’est facultatif.

 // load file
    File inputFile = new File(filePath);
    // parse file as HTML document
    Document doc = Jsoup.parse(filePath, ENCODING);
    // select element by <a> 
    Elements elements = doc.select("a");