我有这个HTML:
<ul class = "page-numbers"> <li> <a class= "prev page-numbers" href= "..."> prev </a> </ li> <li> <a class= "page-numbers" href= "..."> 1 </a> </ li> ..... <li> <a class= "page-numbers" href= "..."> 20 </a> </ li> <li> <a class= "next page-numbers" href= "..."> next </a> </ li> </ UL>
需要选择包含带有数字的a元素的第一个和最后一个li(不包含文本prev或next)此xpath查询返回我需要的第一个li(包含页码1的li):
//ul[ @class='page-numbers' ]
/li[
not(
a[ contains( @class, 'prev' ) ]
) and
not(
a[ contains( @class, 'next' ) ]
) and
position() = 1
]"
试图获得最后一个li(包含第20页的那个)时遇到问题 . 试过:
//ul[ @class='page-numbers' ]
/li[
not(
a[ contains( @class, 'prev' ) ]
) and
not(
a[ contains( @class, 'next' ) ]
) and
position() = last()
]"
和
//ul[ @class='page-numbers' ]
/li[
not(
a[ contains( @class, 'prev' ) ]
) and
not(
a[ contains( @class, 'next' ) ]
) and
last()
]"
但它不起作用 . 第一个返回一个空的nodeList,第二个返回一个nodeList,其中包含所有具有数字的li(1-20) . 有人可以帮忙吗?
1 回答
我认为这个XPath可以帮助你:
//ul/li[not(./a[contains(text(),'next')]) and not(./a[contains(text(),'prev')])][last()] | //ul/li[not(./a[contains(text(),'next')]) and not(./a[contains(text(),'prev')])][1]
[请,看看它是如何起作用的] [1] [1]:https://i.stack.imgur.com/XQTJ2.png