如何提取一些xpath兄弟元素,这些元素是一些元素(n)远离另一个兄弟元素?

时间:2018-04-13 00:44:39

标签: xml python-3.x selenium-webdriver xpath

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

我想知道这里是否有人知道如何提取与原始元素相距n个单位的任何兄弟元素。在我的例子中,我试图提取在我解析的元素的10个单位内的元素。

我从github api documentation

中抓取了我的元素

然后使用selenium和python我得到了xpath语句中的元素列表:

'//pre/code'

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

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

1 个答案:

答案 0 :(得分:1)

对于此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>

按要求。