【发布时间】:2022-11-01 19:10:23
【问题描述】:
我正在 Kotlin 中使用 Jsoup 创建解析器
我需要在具有类“titleCard-synopsis”的标签内获取具有类“ptrack-content”的标签的内部文本
当我试图在由以前的 getElementsByClass 创建的元素对象中获取元素对象时,我得到 0 个元素
代码:
class NetlifxHtmlParser {
val html = """
<div class="titleCardList--metadataWrapper">
<div class="titleCardList-title"><span class="titleCard-title_text">Map Her</span><span><span class="duration ellipsized">50m</span></span></div>
<p class="titleCard-synopsis previewModal--small-text">
<div class="ptrack-content">A hidden map rocks Hartley High as the students' sexcapades are publicly exposed. Caught as the culprit, Amerie becomes an instant social pariah.</div>
</p>
</div>
<div class="titleCardList--metadataWrapper">
<div class="titleCardList-title"><span class="titleCard-title_text">Renaissance Titties</span><span><span class="duration ellipsized">50m</span></span></div>
<p class="titleCard-synopsis previewModal--small-text">
<div class="ptrack-content">Amerie, the new outcast, receives a party invitation that gives her butterflies. But when she manages to show up, a bitter surprise awaits.</div>
</p>
</div>
""".trimIndent()
fun parseEpisode() {
val doc = Jsoup.parseBodyFragment(html)
val titleCards = doc.getElementsByClass("titleCard-synopsis")
println("Episode: count titleCard = > ${titleCards.count()}") // 2
titleCards.forEachIndexed { index, element ->
val ptrack = element.getElementsByClass("ptrack-content")
println("Episode: count ptrack = > ${ptrack.count()}") // 0 !!
println("inner html = > ${ptrack.html()}") // null string !!
}
}
}
在上面的代码中,
首先,我提取类名titleCard-synopsis 的标签。
为此,我使用 doc.getElementsByClass("titleCard-synopsis") 返回 2 个元素项。
然后,在titleCard 元素列表中,我通过在每个元素中使用相同的 getElementsByClass 来提取具有ptrack-content 作为类的元素,
它返回空列表。
为什么会这样?
我的目标是,我需要提取每个标题的描述文本,存储在类 titleCard-synopsis 的 p 标签的内部标签中。
如果我尝试直接从“ptrack-content”获取,它工作正常,但这是一个在主要 HTML 源代码的许多地方使用的通用类。 (这是sn-p)
我需要在带有类“titleCard-synopsis”的标签内获取带有类“ptrack-content”的标签的内部文本
但是在代码中的上述方法中,我只得到空列表。
为什么 ?
另请注意,如果我在titleCards(ptrack.html()) 的元素对象中调用HTML() 方法,
我没有得到内部 DIV 标签,一个空字符串!!!
请指导我解决问题!
【问题讨论】:
标签: kotlin jsoup html-parsing