Wie lassen sich vorgegebene HTML-Elemente und Argumente aus Webseiten auslesen?

jsoup1) bietet eine Vielzahl an Klassen und Methoden, mit denen HTML-Seiten ausgelesen und manipuliert werden können.
Das Beispiel demonstriert, wie die Ankertexte und die Verweisziele einer Linkliste ausgelesen werden können.

Vor der Verwendung von jsoup muss die Bibliothek in Form einer *.jar-Datei von https://jsoup.org/download heruntergeladen werden. Die Einbindung in ein Eclipse-Projekt erfolgt dann wie im Artikel Bibliothek einbinden beschrieben.

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JSoupBsp {

    public static void main(String[] args) {
        try {
            // Dokument von URL laden
            Document doc = Jsoup.connect("https://javabeginners.de").get();
            // Liste der Anker holen
            Elements values = doc
                    .select("div#referenzen ul li + li a[href]");
            // Liste durchlaufen und Ankertexte und Sprungziele darstellen
            for (Element elem : values) {
                System.out.println(elem.text() + " -> " + elem.attr("href"));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Im angeführten Beispiel werden die Verlinkungen auf der rechten Seite der Javabeginners-Webseite ausgelesen, die sich im Unterpunkt Referenzen & Literatur befinden.

Durch die statische Methode Jsoup.connect() wird zunächst ein Connection-Objekt erstellt, dessen Methode get() dann ein Document-Objekt liefert. Es stellt die Gesamtheit des HTML-Dokumentes dar, dessen Eigenschaften und Inhalte nun ausgelesen oder manipuliert werden können.
Die Methode select() des Document-Objektes erwartet als Parameter einen String, der das gewünschte HTML-Element anhand seiner Stellung im Dokument (DOM) definiert. Zum einfachen Auslesen der DOM-Hierarchie eines HTML-Dokumentes bieten die meisten Browser entsprechende Werkzeuge an (z.B. Firefox: Extras → Web-Entwickler → Inspektor).
Der hier übergebene Selektor

div#referenzen ul li + li a[href]

erklärt sich hiernach wie folgt:

Die Startseite von javabeginners.de, die hier angesprochen wird, enthält ein div-Element, das durch die ID referenzen eindeutig angesprochen werden kann (IDs dürfen innerhalb eines HTML-Dokumentes nur einmal deklariert werden).
Innerhalb dieses Elementes befindet sich eine Liste (ul) , in der wiederum einzelne Listenpunkte (li) enthalten sind.
Der dann folgende Ausdruck +li besagt, dass auf Listen-Unterpunkte zugegriffen werden soll, die sich unmittelbar in übergeordneten Listenpunkten befinden. Dies ist nur in den Unterpunkten des Bereiches Referenzen & Literatur der Fall.
Durch a[href] werden hierin wiederum Anker-Elemente angesprochen, die ein href-Attribut besitzen.
Die exakte Syntax solcher Selektoren kann in der Dokumentation der Klasse Selector nachgelesen werden.

In einer einfachen for-Schleife wird die ermittelte Element-Liste anschließend durchlaufen und durch die Methode text() der Ankertext und durch die Methode attr() der Wert des href-Attributs ausgelesen und schließlich dargestellt.

Die Ausgabe erscheint wie folgt:

Ältere Java-Versionen  -> https://www.oracle.com/technetwork/java/archive-139210.html
Java Code-Konventionen  -> https://www.oracle.com/technetwork/java/index-135089.html
Java L&F Design Guidelines  -> https://www.oracle.com/technetwork/java/jlf-135985.html
Java-Insel  -> https://www.galileocomputing.de/openbook/javainsel4/
Java 7 - Mehr als eine Insel  -> https://openbook.galileocomputing.de/java7/
Java-Handbuch 3. Auflage  -> https://dbs.cs.uni-duesseldorf.de/lehre/docs/java/javabuch/html/cover.html
Java-Handbuch aktuelle Download-Version  -> https://www.javabuch.de/download.html
Oracle Java-Tutorials  -> https://www.oracle.com/technetwork/java/index-jsp-135888.html
Java Generics FAQs  -> https://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html
James Gosling - Java: an Overview  -> https://www.cs.dartmouth.edu/~mckeeman/cs118/references/OriginalJavaWhitepaper.pdf

1) Der Name jsoup schreibt sich durchgängig klein. Entgegen grammatikalischer Konventionen wird hierauf Rücksicht genommen.

Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.