Для неструктурированных ссылок вы можете попробовать что-то вроде //body/descendant::a[text()='a link'][9]
. Ось потомка сгладит все теги потомка «a», поэтому position () будет принимать порядок, в котором они появляются в документе, а не на основе предыдущих элементов каждого тега.
Если ссылки полуструктурированы, как показано ниже, то что-то вроде
//div[@id='fu']//a[text()='a link']/../following-sibling::*//a[text()='a link']/../following-sibling::*//a[text()='a link']/../following-sibling::*//a[text()='a link']/../following-sibling::*//a[text()='a link']/../following-sibling::*//a[text()='a link']/../following-sibling::*//a[text()='a link']/../following-sibling::*//a[text()='a link']/../following-sibling::*//a[text()='a link']
может найти вам 9-ю подходящую ссылку с заданной структурой.
<p>a segment, outside the containing div, with <a href="www.google.com">a link</a>.</p>
<div id="fu">
<p>some text <a href="www.google.com">a link</a>.</p>
<p>some text <a href="www.google.com">a link</a>.</p>
<p>some text <a href="www.google.com">a different link</a>.</p>
<p>some text <a href="www.google.com">a link</a>.</p>
<p>some text <a href="www.google.com">a link</a>.</p>
<p>some text <a href="www.google.com">a link</a>.</p>
<p>some text <a href="www.google.com">a link</a>.</p>
<p>some text <a href="www.google.com">a link</a>.</p>
<p>some text <a href="www.google.com">a link</a>.</p>
<p>some text <a href="www.google.com">a link</a>.</p>
<p>some text <a href="www.google.com">a link</a>.</p>
<p>some text <a href="www.google.com">a link</a>.</p>
<p>some text <a href="www.google.com">a link</a>.</p>
<div></div></div>