Я використовую HtmlUnit для розбору HTML pae в java, я хочу отримати всі таблиці з сторінки, а потім знайти 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 не вдалося знайти подібну річ.
Відповіді:
2 для відповіді № 1Є багато функцій, доступних у HtmlUnit
теж. Перевірте наступні в Інтернеті HtmlUnit
документація:
Спробуйте скористатися цим, щоб отримати те, що ви намагаєтеся досягти.
2 для відповіді № 2
Просто скористайтеся більш підходящим XPath
вираз:
//table/preceding-sibling::*[position()<=3]
Дано
<html>
<p/>
<p/>
<div/>
<table>
<tr>
<td>sdf</td>
</tr>
</table>
</html>
Це повернеться:
<p/>
<p/>
<div/>
Перевірте це тут.
Тоді ви просто перебираєте результати найпростішим способом.