gpt4 book ai didi

java - HtmlUnit - getByXPath 元素类型未知

转载 作者:行者123 更新时间:2023-12-01 11:35:58 25 4
gpt4 key购买 nike

我正在使用 HtmlUnit 来抓取数据,并且我正在习惯 XPath 的语法。但是我遇到了一个问题。

我需要拉出一个在页面之间有所不同的元素,有时它是“span”元素,有时它是“a”元素(链接)。原因很简单,有时我正在抓取的项目有一个链接,有时它只是纯文本(为了说明显而易见的情况)。然而,相同的是一个名为“data-reactid”的属性,它总是有一个设定值,我们就说 99。我一直在阅读和闲逛,并一直在尝试这样的事情:

HtmlElement element = (HtmlElement) myPage.getFirstByXPath("//@data-reactid='99'");
System.out.println(element.getTextContent());

我收到以下错误:

java.lang.ClassCastException: java.lang.Boolean cannot be cast to com.gargoylesoftware.htmlunit.html.HtmlElement

为什么 getFirstByXPath() 返回 boolean 值超出了我的范围。

所以我的问题是,当我不知道元素是什么类型时,如何通过指定的属性和值访问元素?

谢谢!

最佳答案

它给你一个 boolean 值,因为你的 XPath 要求一个 boolean 值。您的 XPath,

//@data-reactid='99'

问的问题是“我的文档中是否存在值为 99 的 data-reactid 属性?”

您想要的是一个谓词——即“选择此逻辑条件为真的元素”。对于 @data-reactid 为 99 的所有元素(我们将使用 * 通配符,因为我们不知道名称):

//*[@data-reactid = '99']

关于java - HtmlUnit - getByXPath 元素类型未知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29989412/

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