Это даст вам все a, где класс равен 'sub_category' после второй категории
//a[@class='category'][2]/following-sibling::a[@class='sub_category']
, также имейте в виду, что он будет включать все "sub_category" a, например,
<div class="categories">
<a class="category" href="#">A</a>
<a class="sub_category" href="#">B</a>
<a class="sub_category" href="#">BB</a>
<a class="sub_category" href="#">BBB</a>
<a class="category" href="#">AA</a>
<a class="sub_category" href="#">B</a>
<a class="sub_category" href="#">BB</a>
<a class="sub_category" href="#">BBB</a>
<a class="sub_category" href="#">BBBB</a>
<a class="sub_category" href="#">ВBBBB</a>
<a class="sub_category" href="#">ВBBBBB</a>
<a class="sub_category" href="#">ВBBBBBB</a>
<a class="sub_category" href="#">ВBBBBBBB</a>
<a class="category" href="#">AAA</a>
<a class="sub_category" href="#">B</a>
<a class="sub_category" href="#">BB</a>
<a class="sub_category" href="#">BBB</a>
</div>
Приведенный выше xpath также будет содержать буквы в категории AAA
Если вам нужно извлечь только выбранные буквы, вы можете сделать что-то вроде следующего:
//a[@class='category' and text()='AA']/following-sibling::a[@class='sub_category'][position()<8]