<div class="item-container">
<h4 class="title">Item 1</h4>
<h4 class="impact"><i class="exclamation point"></i>Impact:High</h4>
</div>
<div class="item-container">
<h4 class="title">Item 2</h4>
</div>
我需要一个jsoup大师。
我只想抓住文本&#34;项目1&#34; (只有h4&#39; s另一个班级&#34;影响&#34;紧随其后)。我该怎么做?
到目前为止,我只能从正确的类中获取所有h4,但无法根据周围元素过滤输出:
import java.io.File;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
public class GetItem {
public static void main(String[] args) throws IOException {
File input = new File("D:\\html.html");
Document doc = Jsoup.parse(input, "UTF-8");
Elements div = doc.select("div.item-container");
Elements h4 = doc.select("div.item-container > h4.title");
for (int i = 0; i < h4.size(); i++) {
System.out.println("Item: " + h4.get(i).text());
}
}
}
答案 0 :(得分:1)
您可以使用以下代码(我已经使用Jsoup 1.9.2对其进行了测试):
File input = new File("D:\\html.html");
Document doc = Jsoup.parse(input, "UTF-8");
Elements h4 = doc.select("div.item-container > h4.title");
for (Element e : h4) {
if (e.nextSibling() != null && e.nextElementSibling().hasClass("impact")) {
System.out.println("Item: " + e.text());
}
我们的想法是像你一样获得所有h4
元素,如果它有兄弟,则测试它们中的每一个,如果是的话 - 如果兄弟姐妹有类impact
。