我一直在解析github文档页面的HTML,并在此过程中学习一些关于xpath的内容。
我想知道这里是否有人知道如何提取与原始元素相距n个单位的任何兄弟元素。在我的例子中,我试图提取在我解析的元素的10个单位内的元素。
中抓取了我的元素然后使用selenium和python我得到了xpath语句中的元素列表:
'//pre/code'
从这里我对上面的xpath中包含的文本进行一些分析,最后我想返回上述xpath元素的10个单元内的元素。
非常感谢您提供的任何帮助。
答案 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>
按要求。