HTML-Parsing in Java: Die besten Bibliotheken und Codebeispiele

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

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");

Empfehlungen