java - 如何查找兄弟索引小于 x 且大于 y 的元素

标签 java jsoup

我有一些 Element 电子新闻。通过 CssQuery 找到索引后,我必须选择索引小于 y 且大于 x 的兄弟元素;

Elements lines = eNews.select("div.clear");

int x = lines.get(0).elementSiblingIndex();
int y = lines.get(1).elementSiblingIndex();

Elements tNews = eNews.getElementsByIndexGreaterThan(x) 
                 ?AND? 
                 eNews.getElementsByIndexLessThan(y)

这是一些示例代码。我想从第一个和第二个 <div class="clear></div> 之间的 html 标签中提取文本

<div class="aktualnosci">

 <div class="zd">
  <a href="/Data/Thumbs/ODAweDYwMA,dsc_0458.jpg" title="" rel="lightbox">
   <img src="/Data/Thumbs/dsc_0458.jpg"/>
  </a>
  <p class="show"></p>
 </div>
 <h3>Awanse</h3>
 <div class="data">
  <img alt="" src="/Themes/kalendarz-ico.gif">
2013-11-18 12:26
 </div>

 <!--Start tag-->
 <div class="clear"></div>

 <!--Tags to extract-->
 <p class="gr">W związku z Narodowym Świętem Niepodległości ....</p>
 <p style="text-align: justify">W zeszły p....</p>
 <p style="text-align: justify">OISW Kraków</p>

 <!--End tag-->
 <div class="clear"></div>
 <div class="slider">
  <span class="slide-left"></span>
  <span class="slide-right"></span>
 </div>
</div>

最佳答案

您可以使用像 div.clear ~ :gt(1):lt(4) 这样的选择器

例如:

Elements tNews = eNews.select("div.clear ~ :gt(1):lt(4)");

参见 this exampleselector docs . (在不知道您输入的 HTML 和您尝试提取的数据的情况下,很难验证这确实是您想要实现的目标。)

根据您的编辑进行更新:如果您无法提前知道索引,有几种方法可以执行此操作。下面我得到第一个 div,然后累积同级元素,直到我们点击下一个 div.clear。 (我会考虑是否可以生成此模式并将其添加到 jsoup。)

Document doc = Jsoup.parse(h);
Element firstDiv = doc.select("div.clear").first();
Elements news = new Elements();
Element item = firstDiv.nextElementSibling();
while (item != null && !(item.tagName().equals("div") && item.className().equals("clear"))) {
    news.add(item);
    item = item.nextElementSibling();
}

System.out.println(String.format("Found %s items", news.size()));
for (Element element : news) {
    System.out.println(element.text());
}

输出:

Found 3 items
W związku z Narodowym Świętem Niepodległości ....
W zeszły p....
OISW Kraków

关于java - 如何查找兄弟索引小于 x 且大于 y 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20023973/

相关文章:

groovy - Jsoup 与 groovy XmlSlurper?

java - 在 Android 中解析一些 HTML 代码的最佳方法

java - 在多线程程序中使用 Jsoup 出现 400 Http 错误

java - JPA持久化继承

java - 抽象和封装是两个不同的概念吗?抽象是专门与 OOP 相关的术语吗?

java - 平板扫描仪中的 ADF

java - 有没有办法在一个 Jsoup 选择中深入获取多个元素?

java - 从网站中提取所有图像

java - 写入 RandomAccessFile 时权限被拒绝

java - 无法编译Java程序(注意: No Access to environment variable setup)