如何使用jsoup选择HTML文档的叶子标签

3

我正在使用jsoup来解析一个html文档。我需要提取所有子div元素。这基本上是没有嵌套div标签的div标签。我在java中使用以下代码来提取div标签:

Elements bodyTag = document.select("div:not(div>div)"); 

以下是一个例子:

<div id="header">
     <div class="container">
         <div id="header-logo"> 
         <a href="/" title="mekay.com">
             <div id="logo">
             </div> </a>
        </div>
        <div id="header-banner">
            <div data-type="ad" data-publisher="lqm.j2ee.site" data-zone="ron">
            </div>
        </div>
     </div>
</div>

我需要仅提取以下内容:
 <div id="logo">
 </div>
 <div data-type="ad" data-publisher="lqm.j2ee.site" data-zone="ron">
 </div>

相反,上面的代码片段返回所有的div标签。因此,请帮我找出这个选择器有什么问题。
2个回答

1
这个是完美工作的。
Elements innerMostDivs = doc.select("div:not(:has(div))");

尝试一下 在线

  • 添加您的html文件
  • 将css查询添加为div:not(:has(div))
  • 检查结果元素

0
如果您只想要没有任何子元素的div叶节点,则使用此代码。
Elements emptyDivs = document.select("div:empty");

您现在使用的选择器意味着获取所有不是另一个div的直接子元素的div。它通常会带来第一个父div,因为div id="header"不是div的直接子元素。很可能它的父元素是body


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接