【发布时间】:2011-10-30 22:12:20
【问题描述】:
有没有办法在 Jsoup 中只选择最里面的 div(即 不 包含其他 div 的 div)?
澄清一下:我指的只是 div。也就是说,如果一个 div 包含不是 div 的元素但它不包含任何 div,则它被视为(就我而言)“最内层 div”。
【问题讨论】:
标签: java html-parsing jsoup
有没有办法在 Jsoup 中只选择最里面的 div(即 不 包含其他 div 的 div)?
澄清一下:我指的只是 div。也就是说,如果一个 div 包含不是 div 的元素但它不包含任何 div,则它被视为(就我而言)“最内层 div”。
【问题讨论】:
标签: java html-parsing jsoup
Jsoup 适用于 CSS 选择器。但是使用 CSS 选择器无法实现您想要的。所以这是毫无疑问的。您需要检查循环中的每个 div。
Elements divs = document.select("div");
Elements innerMostDivs = new Elements();
for (Element div : divs) {
if (div.select(">div").isEmpty()) {
innerMostDivs.add(div);
}
}
// ...
【讨论】:
document.select("div:not(>div)") 来查看 Jsoup 是否没有内置的偷偷摸摸的技巧来使其工作。但是,不幸的是,没有。
您可以使用div:not(:has(div)) 之类的选择器——即“查找不包含 div 的 div”。
Elements innerMostDivs = doc.select("div:not(:has(div))");
【讨论】: