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

Kotlin中使用Jsoup提取HTML标签data-video属性值失败如何解决

问题排查与解决方法

第一步:验证原始HTML内容是否符合预期

绝大多数返回空的情况是请求拿到的响应文本本身不存在目标元素,先执行以下代码打印原始返回内容,确认是否包含class为tab-video的li标签:

val rawHtml = get(data).text
println("原始HTML内容:$rawHtml")
// 手动检查输出内容中是否存在目标li标签

如果原始内容没有目标元素,说明请求本身没有拿到正确的页面:

  • 检查请求是否缺少必要的Cookie、User-Agent等请求头
  • 确认目标内容是否为前端JS动态渲染生成,静态HTTP请求无法直接拿到这类内容,需要改用无头浏览器等方案获取渲染后的页面内容

第二步:调整Jsoup提取逻辑

如果确认原始HTML包含目标元素,可按以下方案调整提取代码:

写法1:拆分校验逻辑,便于定位问题

val doc = Jsoup.parse(rawHtml)
val targetLi = doc.selectFirst("li.tab-video")
if (targetLi == null) {
    // 匹配不到元素的处理逻辑
    return false
}
// 两种属性获取方式二选一即可,dataset方法专门用于提取data-*属性,稳定性更高
val videoUrl = targetLi.attr("data-video")
// val videoUrl = targetLi.dataset().get("video")

写法2:兜底模糊匹配

如果目标元素的class属性还附带其他值,导致精确匹配失败,可以用模糊匹配选择器:

val videoUrl = Jsoup.parse(rawHtml)
    .selectFirst("li[class*='tab-video']")
    ?.attr("data-video") 
    ?: return false

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:15:03