如何从另一个同级元素中提取距离一定数量的元素 (n) 的 xpath 同级元素?



我一直在解析 github 文档页面的 HTML,并在此过程中学习了一些关于 xpath 的知识。

我想知道这里是否有人知道一种方法可以提取与原始元素相距 n 个单位的任何兄弟元素。在我的示例中,我尝试提取我解析的元素的 10 个单位内的元素。

我从 github api 文档中获取我的元素

然后将 Selenium 与 python 一起使用,我从 xpath 语句返回了一个元素列表:

'//pre/code'

从这里开始,我对上述 xpath 中包含的文本进行了一些分析,最后我想返回上述 xpath 元素的 10 个单位内的元素。

非常感谢您提供的任何帮助。

对于此 XML,

<r>
<pre id="i1"><code/></pre>
<pre id="i2"><code/></pre>
<pre id="i3"><code/></pre>
<pre id="i4"><code/></pre>
<pre id="i5"><code/></pre>
<pre id="i6"><code/></pre>
<pre id="i7"><code/></pre>
<pre id="i8"><code/></pre>
<pre id="i9"><code/></pre>
</r>

这个 XPath 1.0 表达式,

//pre[   @id="i5"
or following-sibling::pre[3 >= position()][@id="i5"]
or preceding-sibling::pre[3 >= position()][@id="i5"]]

将选择i5pre元素以及 3 个前面的同级和 3 个后面的同级pre元素,

<pre id="i2"><code/></pre>
<pre id="i3"><code/></pre>
<pre id="i4"><code/></pre>
<pre id="i5"><code/></pre>
<pre id="i6"><code/></pre>
<pre id="i7"><code/></pre>
<pre id="i8"><code/></pre>

根据要求。

最新更新