如果子节点具有属性,则选择跟随兄弟

时间:2019-07-29 00:55:49

标签: python xpath scrapy scrapy-splash

我正在为该网站创建一个刮板: https://www.oddsportal.com/darts/europe/european-championship/results/

我正在使用启动插件呈现javascript

我想跟随前几年获取历史数据,前一年的类别为“无效”。因此,我想要一个Xpath表达式来查找“活动的”年份并获得上一年的 href

以下是HTML的代码段:

<div class="main-menu2 main-menu-gray"><ul class="main-filter"><li><span class="active"><strong><a href="/darts/europe/european-championship/results/">2018</a></strong></span></li><li><span class="inactive"><strong><a href="/darts/europe/european-championship-2017/results/">2017</a></strong></span></li><li><span class="inactive"><strong><a href="/darts/europe/european-championship-2016/results/">2016</a></strong></span>

这是我的尝试:

response.xpath('//div[@class="main-menu2 main-menu-gray"]/ul/following-sibling::li[child::span[@class="active"]]/strong/a/@href').get()

我希望它会返回:

/darts/europe/european-championship-2017/results/

因为这是当前网址的前一年。

1 个答案:

答案 0 :(得分:1)

这是xpath中的选项。

(//div[@class="main-menu2 main-menu-gray"]/ul/li[.//span[@class="active"]]/following-sibling::li//a)[1]

简单,但不确定是否必须绝对依赖活动元素。

(//div[@class='main-menu2 main-menu-gray']//span[@class='inactive']//a)[1]