HTML-Parsing in Java: Überblick über Bibliotheken und praktische Beispiele
HTML-Parsing (Datenextraktion aus Webseiten) ist eine der zentralen Aufgaben in der modernen Entwicklung. Java bietet leistungsstarke Werkzeuge für diesen Zweck. In diesem Artikel betrachten wir drei beliebte Bibliotheken: Jsoup, HtmlUnit und Apache Tika. Sie erfahren, wie man sie installiert, welche Aufgaben sie lösen und sehen funktionierende Codebeispiele.
Wozu dient HTML-Parsing?
HTML-Parsing wird verwendet für:
- Datensammlung von Websites (Preise, Nachrichten, Kontakte).
- Testen von Webanwendungen (Extrahieren von UI-Elementen).
- Automatisierung von Routineaufgaben (Ausfüllen von Formularen, Überprüfen von Links).
- Analyse der SEO-Struktur von Websites.
1. Jsoup — der beliebteste HTML-Parser für Java
Jsoup ist eine leichtgewichtige, intuitiv verständliche Bibliothek für die Arbeit mit HTML. Sie kann Seiten laden, parsen und Daten mit CSS-Selektoren und jQuery-ähnlichen Methoden extrahieren. Jsoup korrigiert automatisch fehlerhaftes Markup, was es ideal für das Parsen realer Websites macht.
Installation (Maven)
<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.17.2</version></dependency>Beispiel: Extrahieren aller Nachrichtenüberschriften
Angenommen, wir möchten alle Artikelüberschriften von einem Nachrichtenportal erhalten. Wir verwenden den CSS-Selektor h2.news-title.
import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.select.Elements;
public class JsoupExample { public static void main(String[] args) throws Exception { // HTML-Seite laden Document doc = Jsoup.connect("https://example.com/news") .userAgent("Mozilla/5.0") .timeout(5000) .get();
// Alle h2-Elemente mit der Klasse "news-title" extrahieren Elements titles = doc.select("h2.news-title");
// Text jeder Überschrift ausgeben for (var title : titles) { System.out.println(title.text()); } }}Besonderheiten von Jsoup:
- Funktioniert ohne Browser, nur HTTP-Anfragen.
- Unterstützung von CSS-Selektoren (wie in jQuery).
- Möglichkeit zur DOM-Manipulation (Hinzufügen, Entfernen von Elementen).
- Kann kein JavaScript ausführen.
2. HtmlUnit — Parsing mit JavaScript-Unterstützung
HtmlUnit ist ein Browser-Emulator in Java. Es parst nicht nur HTML, sondern verarbeitet die Seite vollständig: führt JavaScript aus, lädt CSS, bearbeitet AJAX-Anfragen. Ideal für moderne SPA-Websites (React, Angular).
Installation (Maven)
<dependency> <groupId>net.sourceforge.htmlunit</groupId> <artifactId>htmlunit</artifactId> <version>2.70.0</version></dependency>Beispiel: Daten nach dem Laden von JavaScript abrufen
Angenommen, auf der Seite gibt es einen dynamischen Block, der 2 Sekunden nach dem Laden erscheint. HtmlUnit wartet darauf.
import com.gargoylesoftware.htmlunit.WebClient;import com.gargoylesoftware.htmlunit.html.HtmlPage;import com.gargoylesoftware.htmlunit.html.HtmlElement;
public class HtmlUnitExample { public static void main(String[] args) throws Exception { try (WebClient webClient = new WebClient()) { // CSS und Logging für Geschwindigkeit deaktivieren webClient.getOptions().setCssEnabled(false); webClient.getOptions().setJavaScriptEnabled(true);
// Seite laden HtmlPage page = webClient.getPage("https://example.com/dynamic");