gpt4 book ai didi

xpath - 如何定义一个仅从两个相似的div中的第一个检索带连字符的元素的xpath表达式?

转载 作者:行者123 更新时间:2023-12-03 15:56:22 24 4
gpt4 key购买 nike

下面的div以该顺序出现在我正在解析的HTML中。

//div[contains(@class,'top-container')]//font/text()


我正在使用上面的xpath表达式来尝试在下面的第一个div中获取任何数据,在该第一个div中使用连字符来分隔数据:

Wednesday - Chess at Higgins Stadium
Thursday - Cook-off


问题是我正在从下面的第二个div获取数据,例如:

Monday 10:00 - 11:00
Tuesday 10:00 - 11:00


我如何只从第一个div检索数据? (我也想排除第一个div中不包含此连字符数据的任何元素)?

<div class="top-container"> 
<div dir="ltr">
<div dir="ltr"><font face="Arial" color="#000000" size="2">Wednesday - Chess at Higgins Stadium</font></div>
<div dir="ltr"><font face="Arial" size="2">Thursday - Cook-off</font></div>
<div dir="ltr"><font face="Arial" size="2"></font>&nbsp;</div>
<div dir="ltr">&nbsp;</div>
<div dir="ltr"><font face="Arial" color="#000000" size="2"></font>&nbsp;</div>
</div>

<div dir="ltr">
<div RE><font face="Arial">
<div dir="ltr">
<div RE><font face="Arial" size="2"><strong>Alex Dawkin </strong></font></div>
<div RE><font face="Arial" size="2">Monday 10:00 - 11:00 </font></div>
<div RE><font size="2">Tuesday 10:00 - 11:00 </font></div>
<div RE>
<div RE><font face="Arial" size="2"></font></div><font face="Arial" size="2"></font></div>
<div RE>&nbsp;</div>
<div RE>&nbsp;</div>

最佳答案

您的XPATH与任何作为font子代的<div class="top-container">元素匹配。

div[1]将处理“顶部容器”元素的第一个div子元素。如果将其添加到XPATH中,它将返回所需的结果。

//div[contains(concat(' ',@class,' '),' top-container '))]/div[1]//font/text()


如果要确保仅寻址包含“-”的 text()节点,则还应该向 text()添加谓词过滤器。

//div[contains(concat(' ',@class,' '),' top-container '))]/div[1]//font/text()[contains(.,'-')]





而不是仅检查节点
包含“-”,您将如何修改
要检查的最后一个表达式
非空字符串?


如果要返回带有值的任何 text()节点,则不需要 text()上的谓词过滤器。如果文本节点没有内容,则它不是文本节点,因此不会被选择。

但是,如果只想选择包含空格以外的文本的 text()节点,则可以使用以下表达式:

//div[contains(concat(' ',@class,' '),' top-container '))]/div[1]//font/text()[normalize-space()]


normalize-space()删除所有前导和尾随空格字符。因此,如果 text()仅包含空白(包括 &nbsp;),则结果将为空且在谓词过滤器中评估为 false(),因此将仅选择 text()包含空格以外的内容。

关于xpath - 如何定义一个仅从两个相似的div中的第一个检索带连字符的元素的xpath表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4062960/

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