我有一些Element eNews。通过 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)
这是一些示例代码。我想从第一个和第二个之间的 html 标记中提取文本<div class="clear></div>
<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)");
请参阅此示例和选择器文档。(在不知道输入 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