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
Auch in der Bibliothek
Arbeit mit XML in Kotlin: Bibliotheken und Werkzeuge für Parsing und Erstellung
Geolokalisierung und Karten in Java: Überblick über Bibliotheken und Werkzeuge
Arbeit mit Daten in C# (.NET): Überblick über Bibliotheken und integrierte Mittel