最近在做简单的爬数据项目,老是遇到要获得某个元素后面的所有兄弟元素都被卡住了,查了JSOUP文档(http://www.open-open.com/jsoup/selector-syntax.htm)老是找不到一个方法去获取,试了siblingElements(), firstElementSibling(), lastElementSibling();nextElementSibling(), previousElementSibling()这些方法,都发现只是能拿到以前的某个兄弟元素而已,昨天话了很长一段时间才把这个问题解决了,问题和答案如下:
问题:获得<div class="test"></div>后面所有兄弟元素 <div class="bbb"></div>
<div class="aaa">
<div class="bbb"></div>
<div class="bbb"></div>
<div class="bbb"></div>
<div class="bbb"></div>
<div class="bbb"></div>
<div class="test"></div>
<div class="bbb"></div>
<div class="bbb"></div>
<div class="bbb"></div>
<div class="bbb"></div>
<div class="bbb"></div>
</div>
<strong><span style="font-size:18px;">答案:</span></strong>
<pre name="code" class="java">package com.util;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class test {
public static void main(String[] args) {
String html = "<div class='aaa'>"+
"<div class='bbb'></div>" +
"<div class='bbb'></div>" +
"<div class='bbb'></div>" +
"<div class='bbb'></div>" +
"<div class='bbb'></div>" +
"<div class='test'></div>" +
"<div class='bbb'></div>" +
"<div class='bbb'></div>" +
"<div class='bbb'></div>" +
"<div class='bbb'></div>" +
"<div class='bbb'></div>" +
"</div>";
Document doc = Jsoup.parse(html);
Elements elements = doc.select("div.aaa > *");
Elements elementsTable = new Elements();
boolean isRow = true;
for(Element element :elements){
if(!element.hasClass("bbb")){
isRow = false;
}
if(!isRow && element.hasClass("bbb")){
elementsTable.add(element);
}
}
System.out.println(elementsTable);
}
}
结果输出:
<div class="bbb"></div>
<div class="bbb"></div>
<div class="bbb"></div>
<div class="bbb"></div>
<div class="bbb"></div>