首页 > 解决方案 > 尽管使用 [ ] 指定了项目,但 Xpath 表达式仍拉取多个项目

问题描述

我正在尝试编写一个 XPath 表达式,它可以返回与搜索的下一页关联的 URL。

导致搜索下一页的 URL 始终href位于a标签后面的标签中span class="navCurrentPage",我一直在尝试使用一个following-sibling术语来拉下一个 URL。我在 Chrome 控制台中的搜索是:

$x('//span[@class="navCurrentPage"][1]/following-sibling::a/@href[1]')

我认为通过指定@href[1]我只会返回一个 URL(认为 [1] 选择了列表中的第一个元素),但 Chrome(和 Scrapy)却返回了四个 URL。我不明白为什么。请帮助我了解如何选择我正在寻找的一个 URL。

这是您可以找到给我带来麻烦的 HTML 的 URL:

https://www.yachtworld.com/core/listing/cache/searchResults.jsp?cit=true&slim=quick&ybw=&sm=3&searchtype=advancedsearch&Ntk=boatsEN&Ntt=&is=false&man=&hmid=102&ftid=101&enid=0&type=%28Sail%29&fromLength =35&toLength=50&fromYear=1985&toYear=2010&fromPrice=&toPrice=&luom=126¤cyid=100&city=&rid=100&rid=101&rid=104&rid=105&rid=107&rid=108&rid=112&rid=114&rid=115&rid=116&rid=153&ridb-int=130&rid=153&ridb-int=130

感谢您的帮助。

标签: xpathscrapy

解决方案


运算符优先级://x[1]意味着/descendant-or-self::node()/child::x[1]找到x作为其父项的第一个子项的每个子代。您想要(//x)[1]在所有名为 的后代中找到第一个节点x


推荐阅读