通过特定条件,使用 XPath 获取在找到的元素之前的第一个元素
Getting the first element that precedes a found element, by a certain condition, with XPath
使用 import.io,给定以下代码片段,在成功提取 name
和 time
列后,如何提取最近的前一个 .heading
元素作为第三个元素使用 XPath 的列?
...
<div class="row-fluid">
<div class="heading">HBO</div>
</div>
<div class="row-fluid">
<div class="name">Silicon Valley</div>
<div class="time">9pm</div>
</div>
<div class="row-fluid">
<div class="name">The Wire</div>
<div class="time">10pm</div>
</div>
...
<hr>
<div class="row-fluid">
<div class="heading">ABC</div>
</div>
<div class="row-fluid">
<div class="name">Lost</div>
<div class="time">9pm</div>
</div>
<div class="row-fluid">
<div class="name">Heroes</div>
<div class="time">10pm</div>
</div>
...
<hr>
...
The nearest element that comes before the matched data with a class of "heading".
可以使用 XPath 中的 preceding
轴找到距给定元素最近的 preceding 元素。假设我们有表达式 div/div[class='name'][. = 'Heroes']
,其中 select 是您示例中的姓氏,最接近的前一个是:
./preceding::div[@class = 'heading'][1]
其中 .
是一个真正的上下文节点,在这种情况下您可以删除 ./
,或者应该将其替换为您已有的表达式的其余部分。
由于前轴向后计数,我们只需要找到第一个元素。注意 preceding axis 不 select 祖先节点或自身节点,从当前节点开始计算。
使用 import.io,给定以下代码片段,在成功提取 name
和 time
列后,如何提取最近的前一个 .heading
元素作为第三个元素使用 XPath 的列?
...
<div class="row-fluid">
<div class="heading">HBO</div>
</div>
<div class="row-fluid">
<div class="name">Silicon Valley</div>
<div class="time">9pm</div>
</div>
<div class="row-fluid">
<div class="name">The Wire</div>
<div class="time">10pm</div>
</div>
...
<hr>
<div class="row-fluid">
<div class="heading">ABC</div>
</div>
<div class="row-fluid">
<div class="name">Lost</div>
<div class="time">9pm</div>
</div>
<div class="row-fluid">
<div class="name">Heroes</div>
<div class="time">10pm</div>
</div>
...
<hr>
...
The nearest element that comes before the matched data with a class of "heading".
可以使用 XPath 中的 preceding
轴找到距给定元素最近的 preceding 元素。假设我们有表达式 div/div[class='name'][. = 'Heroes']
,其中 select 是您示例中的姓氏,最接近的前一个是:
./preceding::div[@class = 'heading'][1]
其中 .
是一个真正的上下文节点,在这种情况下您可以删除 ./
,或者应该将其替换为您已有的表达式的其余部分。
由于前轴向后计数,我们只需要找到第一个元素。注意 preceding axis 不 select 祖先节点或自身节点,从当前节点开始计算。