gpt4 book ai didi

java - 从 BR 标签中提取文本

转载 作者:行者123 更新时间:2023-11-30 06:18:36 24 4
gpt4 key购买 nike

我之前已经能够使用 Selenium 提取文本,但是我在提取 < BR > 标记之间的数字时遇到了问题。这是 html 代码的示例。

<DIV class="pagebodydiv">
<TABLE CLASS="datadisplaytable" SUMMARY="This table will display needed information." WIDTH="100%">
<TR>
<TD CLASS="nttitle" scope="colgroup" >Working Title</A></TD>
</TR>
<TR>
<TD CLASS="ntdefault">
Further information on subject
<BR>
3.000
<BR>
2.000
<BR>
<BR>
<BR>
<BR>
<BR>
More information
<BR>
<BR>
</TABLE>

到目前为止,我已经尝试使用:

WebElement creditinfo = driver.findElement(By.xpath("//div[@class='pagebodydiv']/text()[preceding-sibling::br]

元素 numInfo = doc.select("br");

但是,我一直遇到 NoSuchElementException 错误、InvalidSelectorException 错误,或者它只是不返回任何内容。关于如何获取信息的任何想法?

最佳答案

您实际上可以选择 <BR> 之间的文本节点标签。在 HTML(不是 XHTML)中,它们充当自闭合标签(如 <br/> )。基于该行为,您可以选择所有具有 <BR> 的文本节点。前后使用标签:

//TABLE[@CLASS='datadisplaytable']/TR/TD[@CLASS="ntdefault"]
/text()[preceding-sibling::node()[1][self::BR]
and following-sibling::node()[1][self::BR]]

这也会选择空行和不是数字的字 rune 本。

您可以去掉空白节点,添加一个 [normalize-space(.) != '']到表达式的末尾(现在只返回三个节点)。您可以使用表达式末尾的位置谓词来选择您想要的哪个节点([1] 选择第一个节点。

下面的表达式选择包含值 2.000 的文本节点:

//TABLE[@CLASS='datadisplaytable']/TR/TD[@CLASS="ntdefault"]
/text()[preceding-sibling::node()[1][self::BR]
and following-sibling::node()[1][self::BR]][normalize-space(.) != ''][2]

注意:我假设您的源实际上有大写的标签名称,因为在 XPath 中 <TD><td> 不同.我不确定在解析 HTML 时 Selenium 对此的容忍度如何。

关于java - 从 BR 标签中提取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24289689/

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