【问题标题】:How can I use Jsoup selector "not"如何使用 Jsoup 选择器“不”
【发布时间】:2016-01-03 01:12:06
【问题描述】:
<div id='contents'>
<div class="article_view">
  <div class="article_txt">
      <strong>I don't want to get this point
        <br>I don't want to get this point
        <br>I don't want to get this point
      </strong>

      <div class='articlePhotoC'>
        <img src="" width='500'>
        <span class='t' style='width:480px;'>
          <b>I don't want to get this point </b>
          I don't want to get this point<br>
        </span>
        <div id='adBox' class='txt_ad' style='width:500px;'></div>
      </div>
      From here I want to get--------------
      <br><br>
      <div class='sub_cont_AD08'></div> 
  </div>
</div>

我不知道如何在 Java 中使用 notSelector。 我试着这样做:

  Elements cont = doc.select("div.article_view :not(div.article_view)"); 

但它不起作用。结果包括所有“我不想明白这一点”。我希望只得到“从这里我想得到~~~~”。

谢谢!

【问题讨论】:

  • 您是否还需要文本节点“从这里我想得到--------------”,或者这只是一个评论?

标签: java html html-parsing jsoup


【解决方案1】:

如果您也不需要文本“从这里我想得到--------------”,即您只想选择&lt;div class="article_view"&gt; 中的元素而不是&lt;div class="article_txt"&gt; 和它的孩子,你可以这样做:

Elements els = doc.select("div.article_view>*:not(.article_txt)");

这将选择类“article_view”的 div 的直接子元素 (&gt;) 的所有元素 (*),但类“article_txt”的元素除外。

编辑

现在,已经定义了,您想要的元素确实是 div.article_txt 元素的子元素,我需要修改我的答案:

Elements els = doc.select("div.article_view>div.article_txt>*:not(strong,div.articlePhotoC)");

这变得很麻烦,因为您现在需要定义一个不应包含的内容列表。注意 strongdiv.articlePhotoC 之间的逗号作为 CSS 中的 AND 运算符

【讨论】:

  • 我还能再问一个问题吗?... 排除 标签怎么样?
  • 如果这个答案有帮助,别忘了投票。如果它解决了问题,请考虑接受答案。
  • 排除强标签?我不明白。也许你应该提出一个关于这个的新问题。我的选择器不会选择原始示例中的 &lt;strong&gt; 标记,因为它们是被排除的 div 的子级。
  • 我明白了!我试着按照你写的去做,它正在工作,但我没有得到我想要的。因为上面的来源很奇怪。
    应该关闭
    。但它在声明下被关闭。我学会了如何使用你所说的。非常感谢!
  • 你的HTML结构确实很乱。请检查我的原始输入格式是否正确。然后我们看看我们能做什么
猜你喜欢
相关资源
最近更新 更多
热门标签