我尝试迭代html节点并从这些节点获取信息。
这是html示例:
<div class="less1">
<h4>Test name 1</h4>
<div>
<div id="email">test1@test.com</div>
<div id="email">test2@test.com</div>
<div id="email">test3@test.com</div>
</div>
</div>
<div class="less1">
<h4>Test name 2</h4>
<div>
<div id="email">test_name1@test.com</div>
<div id="email">test_name2@test.com</div>
<div id="email">test_name3@test.com</div>
</div>
</div>
<div class="less1">
<h4>Test name 3</h4>
<div>
<div id="email">test_name_3@test.com</div>
</div>
</div>
<div class="less1">
<h4>Test name 4</h4>
</div>
这是我的代码示例。
final List<HtmlListItem> nodes = htmlPage.getByXPath("//*[@class=\"less1\"]");
for (HtmlListItem node: nodes) {
final List<?> divs = node.getByXPath("//h4/text()");
}
“divs”列表大小始终为4.
是否可以从当前节点获得1个结果?
答案 0 :(得分:2)
要仅获取第一个匹配元素,请使用i18n
:
getFirstByXPath
如果您需要索引的特定元素:
final List<?> divs = node.getFirstByXPath("//h4/text()");
<强>更新强>
问题可能是使用绝对xpath。 尝试在每个节点上使用相对路径:
final Object div = node.getByXPath("//h4/text()").get(index);
否则,您可以从探索子节点的每个节点中提取数据
String text = node.getByXPath("h4/text()");
List<String> emails = node.getByXPath("div/div");