我正在使用HtmlUnit来解析java中的HTML pae,我希望从页面中获取所有表,然后为每个表找到5个以前的兄弟。 这就是我在页面中解析表的方法:
List<HtmlTable> tables = (List<HtmlTable>) page.getByXPath("//table");
if(tables!=null && tables.size()>0) {
for(int k=tables.size()-1; k>=0; k--) {
for (HtmlTableRow row : tables.get(k).getRows()) {
List<HtmlTableCell> tds = row.getCells();
}
}
}
所以如果一个表是这样的:
<p></p>
<p></p>
<div></div>
<table>
.
.
</table>
我需要获得<div>
和两个<p>
元素。
JSoup似乎有一个兄弟http://jsoup.org/apidocs/org/jsoup/nodes/Element.html#previousElementSibling%28%29的方法,无法在HtmlUnit中找到这样的东西。
答案 0 :(得分:2)
HtmlUnit
中也有很多功能可用。检查在线HtmlUnit
文档中的以下内容:
尝试使用此功能,以获得您想要实现的目标。
答案 1 :(得分:2)
只需使用更合适的XPath
表达式:
//table/preceding-sibling::*[position()<=3]
鉴于
<html>
<p/>
<p/>
<div/>
<table>
<tr>
<td>sdf</td>
</tr>
</table>
</html>
这将返回:
<p/>
<p/>
<div/>
测试here。
然后,您只需以最简单的方式迭代结果。