You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中使用Jsoup解析HTML:无法获取嵌套元素的问题求助

解决方案

1. 先确认静态HTML结构是否包含目标嵌套元素

首先打印你获取到的titleCard-synopsis元素的完整HTML,验证这些<p>标签内部确实存在ptrack-content类的元素:

doc.getElementsByClass("titleCard-synopsis").forEach {
    println(it.outerHtml())
}

如果输出里看不到ptrack-content相关标签,说明这部分内容是JavaScript动态渲染的——Jsoup只能抓取服务器返回的静态HTML,无法执行JS加载动态内容,这时候需要用无头浏览器工具模拟页面加载。

2. 静态内容场景:用精准CSS选择器直接定位

如果静态HTML里确实有目标嵌套结构,换用Jsoup的select()方法配合CSS选择器,直接定位<p class="titleCard-synopsis">内部的.ptrack-content元素,比链式调用getElementsByClass更可靠:

val targetElements = doc.select("p.titleCard-synopsis .ptrack-content")
targetElements.forEach { element ->
    val contentText = element.text().trim()
    println(contentText)
}

也可以先过滤出符合条件的<p>元素,再查找子元素:

// 先获取所有带titleCard-synopsis类的<p>标签
val validPElements = doc.getElementsByTag("p").filter { it.hasClass("titleCard-synopsis") }
validPElements.forEach { pElement ->
    val ptrackContent = pElement.getElementsByClass("ptrack-content")
    ptrackContent.forEach {
        println(it.text().trim())
    }
}

3. 动态内容场景:用无头浏览器抓取渲染后的页面

如果是JS动态加载的内容,改用Selenium或HtmlUnit这类工具模拟浏览器加载页面,再用Jsoup解析渲染后的源码:
示例(Selenium + Kotlin):

import org.openqa.selenium.chrome.ChromeDriver
import org.openqa.selenium.chrome.ChromeOptions
import org.jsoup.Jsoup

fun main() {
    // 配置无头Chrome
    val chromeOptions = ChromeOptions().apply {
        addArguments("--headless=new")
        addArguments("--disable-gpu")
        addArguments("--no-sandbox")
    }
    
    // 初始化驱动(需确保ChromeDriver版本与本地Chrome匹配)
    ChromeDriver(chromeOptions).use { driver ->
        driver.get("你的目标页面URL")
        val renderedPageSource = driver.pageSource
        val doc = Jsoup.parse(renderedPageSource)
        
        // 用之前的选择器定位目标元素
        val targetElements = doc.select("p.titleCard-synopsis .ptrack-content")
        targetElements.forEach {
            println(it.text().trim())
        }
    }
}

如果不想手动管理ChromeDriver版本,可以引入webdrivermanager依赖自动处理驱动匹配。

内容的提问来源于stack exchange,提问作者RagAnt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 10:35:20