需要帮助whith xpath查询

时间:2017-09-17 17:42:48

标签: xpath

我有这个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 个答案:

答案 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