我一直在解析 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"]]
将选择i5
pre
元素以及 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>
根据要求。