我有这个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)。 有人可以帮忙吗?
答案 0 :(得分: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