我想读取第二个
div
内的数据:
<div class="my-3">
<div class="d-flex justify-content-between">Monthly:</div>
<div>0 / 30,000</div>
</div>
在上面的标记中,我想读取包含字符串的
div
:0 / 30,000
我能够使用此 XPath 导航到包含字符串
div
的第一个 "Monthly:"
:
//*[normalize-space()='Monthly:']
之后如何选择下面的第二个
div
?
使用这个:
//*[normalize-space()='Monthly:']/following-sibling::div
当前接受的答案中的 XPath,
//*[normalize-space()='Monthly:']/following-sibling::div
适用于OP的确切情况,其中目标标签后面有一个
div
,
<div class="my-3">
<div class="d-flex justify-content-between">Monthly:</div>
<div>0 / 30,000</div>
</div>
但如果目标后面有多个
div
同级元素,可能会产生不同的结果。
例如,考虑以下标记:
<div class="my-3">
<div class="d-flex justify-content-between">Monthly:</div>
<div>0 / 30,000</div>
<div>more</div>
<div>and more</div>
</div>
在这种情况下,不仅会选择
<div>0 / 30,000</div>
,还会选择
<div>0 / 30,000</div>
<div>more</div>
<div>and more</div>
要仅选择 紧随其后的
div
元素,请改用此 XPath:
//*[normalize-space()='Monthly:']/following-sibling::*[1][self::div]
要选择仅紧随任何名称的后续元素:
//*[normalize-space()='Monthly:']/following-sibling::*[1]