xpath如何在<a></a>的最后一个元素之前获取

时间:2014-04-07 17:51:09

标签: python xpath scrapy

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

但我得到了空洞的结果。

请帮忙。

注释

我也需要比较班级名称

2 个答案:

答案 0 :(得分:7)

嗨,你几乎是正确的。我在XPath开头删除了选择器(当前节点选择器),并对其进行了测试here on Xpath tester。这对我来说可以。

// [@ class ='pagination_klass'和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'。

答案 1 :(得分:3)

你的表达

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

将选择所有链接中的倒数第二个但仅当其类等于pagination_klass时。如果您想查找所有pagination_klass个链接中的倒数第二个,请尝试:

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