如何使用XPath选择页面上的所有链接
我想写一个函数来标识特定HTML页面上的所有链接。我的想法是使用XPath,通过使用路径,例如如何使用XPath选择页面上的所有链接,xpath,xpointer,Xpath,Xpointer,我想写一个函数来标识特定HTML页面上的所有链接。我的想法是使用XPath,通过使用路径,例如//body//a[x]和递增x来遍历页面上的第一、第二、第三个链接 在Chrome中尝试这一点时,我加载了页面,并在Chrome开发者工具JS控制台中调用$x(“//body//a[1]”。我期待页面上的第一个链接,但这将返回多个锚元素的列表。调用$x(“//body//a[2]”)将返回两个锚元素。调用$x(“//body//a[3]”不返回任何结果 我希望每次增加[x]都能让我在页面上一个接一个地
//body//a[x]
和递增x来遍历页面上的第一、第二、第三个链接
在Chrome中尝试这一点时,我加载了页面,并在Chrome开发者工具JS控制台中调用$x(“//body//a[1]”
。我期待页面上的第一个链接,但这将返回多个锚元素的列表。调用$x(“//body//a[2]”)将返回两个锚元素。调用$x(“//body//a[3]”
不返回任何结果
我希望每次增加[x]
都能让我在页面上一个接一个地看到每个独特的链接,但它们似乎是分组的。如何重写此路径,以便逐个拾取每个锚定标记?如果使用路径//body/genderant::a[1]
,//body/genderant::a[2]
等等,则可以选择body
元素的所有子体a
元素。或者在尝试时需要大括号,例如(//body//a)[1]
,(//body//a)[2]
等等
但是请注意,在使用Javascript的浏览器中,有一个文档。对象模型中的links
集合,因此不需要XPath来访问链接。如果要选择页面上的第一个链接,则//body//a[1]
应该是(//body//a)[1]
。前一个表达式选择作为其父元素的第一个子元素的任何元素
但无论如何,这似乎是一件非常奇怪的事情。为什么你需要一个接一个的链接?只需使用//body//a
选择所有节点,作为节点列表或节点集,然后在集合上迭代