Kotlin中的HTML解析:库与代码示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Kotlin中的HTML解析:工具与库的全面概述



Kotlin是一种现代编程语言,可在JVM、Android和浏览器上运行。凭借与Java的兼容性和强大的标准库,Kotlin提供了多种高效的HTML解析方式。本文将介绍Kotlin中用于HTML解析的主要库、它们的特点,并提供实用的代码示例。



1. Jsoup — Kotlin的通用HTML解析器



Jsoup是JVM上最流行的HTML解析库。由于与Java完全兼容,它在Kotlin中表现出色。Jsoup可以从URL、文件或字符串加载HTML,然后通过CSS选择器和DOM导航提取数据。



在Kotlin项目中安装Jsoup

在build.gradle.kts中添加依赖:

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


使用Jsoup解析HTML的示例

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("页面标题: $title") // 提取所有链接 val links = doc.select("a[href]") links.forEach { link -> println("链接: ${link.attr("abs:href")} — ${link.text()}") } // 从字符串解析 val html = "<div class='content'>你好,Kotlin!</div>" val parsed = Jsoup.parse(html) val text = parsed.select(".content").text() println("HTML中的文本: $text")}


2. Ktor Client + kotlinx.html — 原生Kotlin方法



对于使用Ktor作为HTTP客户端的项目,ktor-client和kotlinx.html的组合是一个绝佳选择。前者负责加载页面,后者负责将HTML解析为类型化的DOM结构。



Ktor和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")}


使用Ktor和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 ?: "无标题" println("标题: $title") // 提取所有段落 document.body?.allElements?.filterIsInstance<P>()?.forEach { p -> println("段落: ${p.text}") } client.close()}


3. Kotlin中HTML解析库的比较



工具的选择取决于具体任务。以下是主要标准:



  • Jsoup — 使用CSS选择器进行复杂解析的最佳选择。适用于数据抓取、提取表格、表单和媒体元素。
  • Ktor + kotlinx.html — 非常适合Ktor项目,需要轻量级解析且无需额外依赖。支持异步操作。
  • HtmlCleaner — 另一个与Kotlin兼容良好的Java库。适用于清理“脏”HTML。
  • OkHttp + Jsoup — 结合精细的HTTP请求配置与强大的解析能力。


4. Kotlin中的高级解析技术



使用CSS选择器提取数据(Jsoup)

val doc = Jsoup.connect("https://news.ycombinator.com").get()val stories = doc.select("tr.athing")stories.forEach { story ->                    

推荐