HTML-Parsing in Java: Bibliotheken Jsoup und HtmlUnit

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 die Bibliotheken Jsoup und HtmlUnit



HTML-Parsing (oder Web Scraping) ist der Prozess des Extrahierens von Daten aus HTML-Dokumenten. In Java gibt es für diese Aufgabe mehrere leistungsstarke Bibliotheken, unter denen sich Jsoup (für statisches HTML) und HtmlUnit (für dynamische Seiten mit JavaScript) hervorheben. In diesem Artikel werden wir beide Bibliotheken im Detail besprechen, Codebeispiele zeigen und Ihnen helfen, das passende Werkzeug für Ihr Projekt auf pythonlib.ru auszuwählen.



Was ist Jsoup?

Jsoup ist eine leichtgewichtige Bibliothek zum Parsen, Extrahieren und Manipulieren von HTML-Dokumenten. Sie unterstützt CSS-Selektoren, was sie für Webentwickler intuitiv verständlich macht. Jsoup arbeitet mit jedem HTML, auch wenn es fehlerhaft strukturiert ist.



Installation von Jsoup

Fügen Sie die Abhängigkeit zu Ihrer pom.xml (Maven) hinzu:

<dependency>    <groupId>org.jsoup</groupId>    <artifactId>jsoup</artifactId>    <version>1.17.2</version></dependency>


Beispiel für das Parsen mit Jsoup

Betrachten wir ein grundlegendes Beispiel – das Abrufen des Seitentitels und aller Links:

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

public class JsoupExample { public static void main(String[] args) throws Exception { // 1. HTML-Dokument laden Document doc = Jsoup.connect("https://example.com").get();

// 2. Seitentitel extrahieren String title = doc.title(); System.out.println("Titel: " + title);

// 3. Alle Links finden (<a>-Tags) Elements links = doc.select("a[href]"); for (Element link : links) { String href = link.attr("href"); String text = link.text(); System.out.println("Link: " + href + " — Text: " + text); }

// 4. Text aus einem bestimmten Block extrahieren (z.B. <div class="content">) Element content = doc.selectFirst("div.content"); if (content != null) { System.out.println("Blockinhalt: " + content.text()); } }}

In diesem Beispiel führt Jsoup.connect() eine HTTP-Anfrage aus, und select() verwendet CSS-Selektoren, um Elemente zu finden. Jsoup kann auch mit lokalen Dateien und HTML-Strings arbeiten.



Was ist HtmlUnit?

HtmlUnit ist ein "headless" Browser in Java. Es parst nicht nur HTML, sondern führt auch JavaScript aus, verarbeitet AJAX-Anfragen und emuliert Benutzeraktionen. Dies ist die ideale Wahl für Websites, deren Inhalte dynamisch geladen werden.



Installation von HtmlUnit

<dependency>    <groupId>net.sourceforge.htmlunit</groupId>    <artifactId>htmlunit</artifactId>    <version>2.70.0</version></dependency>


Beispiel für das Parsen mit HtmlUnit

Parsen einer Seite, die Daten über JavaScript lädt:

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 { // 1. WebClient erstellen (Browser-Äquivalent) try (WebClient webClient = new WebClient()) { // CSS und Logging deaktivieren, um die Geschwindigkeit zu erhöhen webClient.getOptions().setCssEnabled(false); webClient.getOptions().setJavaScriptEnabled(true); webClient.getOptions().setThrowExceptionOnScriptError(false);

// 2. Seite laden (JavaScript wird automatisch ausgeführt) HtmlPage page = webClient.getPage("https://example.com/dynamic");

// 3. Warten, d

Empfehlungen