如何使用 XPath 选择页面上的所有链接



我想编写一个函数来标识特定HTML页面上的所有链接。我的想法是使用 XPath,通过使用诸如 //body//a[x] 之类的路径并递增 x 来遍历页面上的第一个、第二个、第三个链接。

在Chrome中尝试此操作时,我加载了页面 http://exoplanet.eu/并在Chrome开发人员工具JS控制台中调用$x("//body//a[1]")。我希望页面上的第一个链接,但这会返回多个锚元素的列表。调用 $x("//body//a[2]") 将返回两个定位点元素。调用$x("//body//a[3]")不会返回任何内容。

我希望每次增加[x]都会在页面上一个接一个地给我每个唯一的链接,但它们似乎是分组的。如何重写此路径,以便逐个选择每个锚标记?

如果要选择页面上的第一个链接,则应(//body//a)[1] //body//a[1]。前一个表达式选择作为其父元素的第一个子元素的任何元素。

但无论如何,这似乎是一件非常奇怪的事情。为什么需要一一链接?只需使用 //body//a 选择所有这些作为节点列表或节点集,然后遍历该集。

如果使用路径//body/descendant::a[1]//body/descendant::a[2]等,则可以选择body元素的所有后代a元素。或者您的尝试需要大括号,例如 (//body//a)[1](//body//a)[2]等等。

但请注意,在带有 Javascript 的浏览器中,对象模型中有一个 document.links 集合,因此不需要 XPath 来访问链接。

相关内容

  • 没有找到相关文章

最新更新