Xpath如何获取<a>标签中倒数第二个元素

9

我有这个HTML

<a class=pagination_klass></a>
<a class=pagination_klass></a>
<a class=pagination_klass></a>
<a class=pagination_klass></a>
<a class=pagination_klass>HERE</a>
<a class=pagination_klass></a>

我希望获得倒数第二个<a>

我尝试了这个:

.//a[@class='pagination_klass' and position() = (last()-1)]/@href

但是我得到了空结果。

请帮忙。

注意

我还需要按类名进行比较。


@freefaller:“给我汽车的手册。我需要修理割草机。” - WGS
为什么有人要downvote这个问题?我有一个问题,我尝试着去解决它,但是我无法解决,所以我提出了问题。这有什么错吗? - user2226785
@Nanashi:“给我这个XML的XPath。我需要匹配另一个XML”...你的意思是什么? - freefaller
1
@freefaller:如果你没明白,那就是他所做的事情。他在修剪草坪机时要求汽车手册。对于OP来说,这不是一个坏问题,但是非常具有误导性。正如freefaller指出的那样,在你的例子中甚至没有href。让问题与你的问题相关 - WGS
啊,抱歉 @Nanashi - 我以为你在批评我的评论 - 今天真是一天过得太累了! - freefaller
显示剩余4条评论
2个回答

15

你翻译得几乎正确。我在XPath的开头删除了选择器(当前节点选择器),并在这里使用XPath测试工具进行了测试。对我来说很好用。

//a[@class='pagination_klass' and position() = (last()-1)]/@href

对于

<html>
...
<a class='pagination_klass'></a>
<a class='pagination_klass'></a>
<a class='pagination_klass'></a>
<a class='pagination_klass'></a>
<a class='pagination_klass' href='LINK'>HERE</a>
<a class='pagination_klass'></a>
..
</html>

将会是一个结果属性节点 href='LINK'。


你使用了我给你的精确代码,但我告诉过你它不起作用。 - user2226785
不,你的Xpath以.开头,这是当前节点选择器。我只删除了.,它就可以工作了。在这里尝试一下:http://www.utilities-online.info/xpath/?save=7a1c88f9-af15-46ec-80a8-1db79dea6f23-xpath#.U0LqpPl_shY 只需要在表单上点击“评估XPath”按钮即可。 - Jaroslav Kubacek

4

您的表达

.//a[@class='pagination_klass' and position() = (last()-1)]/@href

如果只有当它的类为 pagination_klass 时,选择倒数第二个链接。 如果您想查找所有 pagination_klass 链接中的倒数第二个,请尝试:

.//a[@class='pagination_klass'][last()-1]/@href

我需要获取所有具有特定类的a标签中最后一个href。因此,我必须使用您的第一段代码,也就是我的代码,但它不起作用,而第二段代码则会抛出异常。请确保在括号之间不需要加上“/”? - user2226785

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接