gpt4 book ai didi

java - HtmlUnit 2.8 getFirstByXPath 与 HtmlUnit 1.14 getFirstByXPath 不同吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:15:03 28 4
gpt4 key购买 nike

我的站点结构看起来像这样:

<div class='main_container'>
<div class='item_container'>
<div class='body'>
<span class='item_name'>Item 1</span>
<span class='item_desc'>Desc 1</span>
</div>
</div>
<div class='item_container'>
<div class='body'>
<span class='item_name'>Item 2</span>
<span class='item_desc'>Desc 2</span>
</div>
</div>
...
</div><!--End of main_container-->
//Note: Some divs might not have <span @class='item_name'>Item N</span> or other elements inside the item_container

在 HtmlUnit 1.14 中,如果我想获取所有项目名称:

List<HtmlDivision> divs = (List<HtmlDivision>)page.getByXPath("//div[@class='item_container']");
for(HtmlDivision div:divs){
String name = ((HtmlElement)div.getFirstByXPath("//span[@class='item_name']")).asText();
System.out.println(name);
}

输出:

Item 1
Item 2
...

但是在 HtmlUnit 2.8 中,当我做同样的事情时,我得到了。

Item 1
Item 1
...

在 HtmlUnit 2.8 中是否有解决此问题的方法?

最佳答案

可能是 HtmlUnit 1.4 存在您正在利用/依赖的错误。

在您显示的代码中,for 中的 XPath循环应该在每次执行时返回相同的元素(就像它在 v2.8 中所做的那样),因为它以 // 开头,它从根节点开始查看整个文档,并返回它找到的第一个

如果您希望它与 <div> 相关在循环中,您应该将 XPath 调整为:.//span[@class='item_name']

关于java - HtmlUnit 2.8 getFirstByXPath 与 HtmlUnit 1.14 getFirstByXPath 不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6691550/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com