HTML-Parsing in Kotlin: 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 Kotlin: Überblick über Bibliotheken und praktische Beispiele

Kotlin ist eine moderne, plattformübergreifende Sprache, die aktiv für die Entwicklung von Serveranwendungen, Android-Apps und Automatisierungstools eingesetzt wird. Eine häufige Aufgabe ist das HTML-Parsing – das Extrahieren von Daten aus Webseiten, die Arbeit mit dem DOM-Baum oder die Generierung von HTML-Vorlagen. In diesem Artikel betrachten wir die wichtigsten Bibliotheken für das HTML-Parsing in Kotlin, ihre Besonderheiten und zeigen funktionierende Codebeispiele.



Wozu HTML-Parsing in Kotlin?

HTML-Parsing wird in folgenden Szenarien benötigt:

  • Datensammlung von Websites (Web Scraping).
  • Automatisierung von Web-Interface-Tests.
  • Generierung von HTML-Berichten oder E-Mail-Vorlagen.
  • Verarbeitung und Analyse von Inhalten aus APIs oder Dateien.

Dank der Kompatibilität mit Java und den eigenen DSL-Konstrukten bietet Kotlin sowohl bewährte Java-Bibliotheken als auch native Lösungen.



1. Jsoup – Universeller HTML/XML-Parser

Jsoup ist die beliebteste Bibliothek für HTML-Parsing im JVM-Ökosystem. Sie bietet eine benutzerfreundliche API zum Laden, Parsen und Manipulieren von HTML-Dokumenten, unterstützt CSS-Selektoren und jQuery-ähnliche Methoden. Für Kotlin ist Jsoup aufgrund der vollständigen Java-Kompatibilität und der Möglichkeit, Kotlin-Erweiterungen zu nutzen, hervorragend geeignet.



Installation (Gradle)

dependencies {    implementation("org.jsoup:jsoup:1.17.2")}


Beispiel: Extrahieren von Artikelüberschriften aus einem Blog

import org.jsoup.Jsoupimport org.jsoup.nodes.Document

fun main() { // HTML-Dokument von einer URL laden val doc: Document = Jsoup.connect("https://example.com/blog").get()

// Alle h2-Überschriften mit der Klasse "post-title" extrahieren val titles = doc.select("h2.post-title")

// Text jeder Überschrift ausgeben titles.forEach { title -> println(title.text()) }

// Beispiel mit CSS-Selektor: Alle Links innerhalb von Artikeln val links = doc.select("article a[href]") links.forEach { link -> println("${link.text()} -> ${link.attr("href")}") }}

Jsoup ermöglicht auch das Parsen von HTML aus einem String, einer Datei oder einem InputStream sowie das Bereinigen von HTML von potenziell gefährlichen Elementen (XSS-Schutz).



2. kotlinx.html – Typsicherer DSL für die Arbeit mit HTML

kotlinx.html ist die offizielle Bibliothek von JetBrains, die zur Generierung von HTML-Code mittels eines typsicheren DSL entwickelt wurde. Im Gegensatz zu Jsoup parst sie kein vorhandenes HTML, sondern erstellt es. Sie kann jedoch mit Jsoup für einen vollständigen Zyklus kombiniert werden: Parsen → Modifikation → Generierung.



Installation (Gradle)

dependencies {    implementation("org.jetbrains.kotlinx:kotlinx-html-jvm:0.11.0")}


Beispiel: Generierung einer HTML-Seite

import kotlinx.html.*import kotlinx.html.stream.createHTML

fun main() { val htmlContent = createHTML().html { head { title("Beispielseite") meta(charset = "UTF-8") } body { h1 { +"Hallo, Kotlin!" } p { +"Dies ist ein Absatz, generiert mit " b { +"kotlinx.html" } } ul { li { +"Punkt 1" } li { +"Punkt 2" } li { +"Punkt 3" } } } } println(htmlContent)}

Dieser Ansatz ist besonders nützlich für die Erstellung von Berichten, E-Mail-Vorlagen oder dynamischen Seiten auf dem Server (Ktor).



3. Ktor Client + Jsoup – Für Parsing mit HTTP-Anfragen

Wenn vor dem Parsing komplexe HTTP-Anfragen (mit Cookies, Headern, Authentifizierung) durchgeführt werden müssen, ist die Kombination von Ktor Client mit Jsoup praktisch. Ktor ist ein asynchroner HTTP-Client, der sich hervorragend in Kotlin Coroutines integriert.



Beispiel: Parsen einer Seite

Empfehlungen