HTML-Parsing in Kotlin: Vollständiger Überblick über Tools und Bibliotheken
Kotlin ist eine moderne Programmiersprache, die auf der JVM, Android und im Browser läuft. Dank der Kompatibilität mit Java und einer leistungsstarken Standardbibliothek bietet Kotlin mehrere effiziente Möglichkeiten zum Parsen von HTML. In diesem Artikel betrachten wir die wichtigsten Bibliotheken zum HTML-Parsing in Kotlin, ihre Besonderheiten und geben praktische Codebeispiele.
1. Jsoup – Universeller HTML-Parser für Kotlin
Jsoup ist die beliebteste Bibliothek zum HTML-Parsing auf der JVM. Sie funktioniert hervorragend mit Kotlin dank vollständiger Java-Kompatibilität. Jsoup ermöglicht das Laden von HTML aus URLs, Dateien oder Strings und das Extrahieren von Daten mittels CSS-Selektoren und DOM-Navigation.
Installation von Jsoup in einem Kotlin-Projekt
Fügen Sie die Abhängigkeit in build.gradle.kts hinzu:
dependencies { implementation("org.jsoup:jsoup:1.17.2")}Beispiel für HTML-Parsing mit Jsoup
import org.jsoup.Jsoupimport org.jsoup.nodes.Document
fun main() { val url = "https://example.com" val doc: Document = Jsoup.connect(url).get() val title = doc.title() println("Seitentitel: $title") // Alle Links extrahieren val links = doc.select("a[href]") links.forEach { link -> println("Link: ${link.attr("abs:href")} — ${link.text()}") } // Parsing aus einem String val html = "<div class='content'>Hallo, Kotlin!</div>" val parsed = Jsoup.parse(html) val text = parsed.select(".content").text() println("Text aus HTML: $text")}2. Ktor Client + kotlinx.html – Nativer Kotlin-Ansatz
Für Projekte, die Ktor als HTTP-Client verwenden, ist die Kombination aus ktor-client und kotlinx.html eine ausgezeichnete Wahl. Ersteres ist für das Laden von Seiten zuständig, Letzteres für das Parsen von HTML in eine typisierte DOM-Struktur.
Abhängigkeiten für Ktor und kotlinx.html
dependencies { implementation("io.ktor:ktor-client-core:2.3.7") implementation("io.ktor:ktor-client-cio:2.3.7") implementation("org.jetbrains.kotlinx:kotlinx-html-jvm:0.11.0")}Beispiel für Parsing mit Ktor und kotlinx.html
import io.ktor.client.*import io.ktor.client.request.*import io.ktor.client.statement.*import kotlinx.html.*import kotlinx.html.parser.*
suspend fun parseHtmlWithKtor() { val client = HttpClient() val response: HttpResponse = client.get("https://example.com") val htmlContent = response.bodyAsText() val document = parseHtml(htmlContent) val title = document.head?.title ?: "Kein Titel" println("Titel: $title") // Alle Absätze extrahieren document.body?.allElements?.filterIsInstance<P>()?.forEach { p -> println("Absatz: ${p.text}") } client.close()}3. Vergleich der Bibliotheken zum HTML-Parsing in Kotlin
Die Wahl des Tools hängt von der jeweiligen Aufgabe ab. Hier sind die wichtigsten Kriterien:
- Jsoup – die beste Wahl für komplexes Parsing mit CSS-Selektoren. Geeignet für Datenscraping, Extrahieren von Tabellen, Formularen und Medienelementen.
- Ktor + kotlinx.html – ideal für Ktor-Projekte, bei denen leichtes Parsing ohne überflüssige Abhängigkeiten erforderlich ist. Arbeitet asynchron.
- HtmlCleaner – eine weitere Java-Bibliothek, gut kompatibel mit Kotlin. Nützlich zum Bereinigen von "schmutzigem" HTML.
- OkHttp + Jsoup – eine Kombination zur Feinabstimmung von HTTP-Anfragen mit leistungsstarkem Parsing.
4. Fortgeschrittene Parsing-Techniken in Kotlin
Datenextraktion mit CSS-Selektoren (Jsoup)
val doc = Jsoup.connect("https://news.ycombinator.com").get()val stories = doc.select("tr.athing")stories.forEach { story ->