Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用XPath选择页面上的所有链接_Xpath_Xpointer - Fatal编程技术网

如何使用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]都能让我在页面上一个接一个地

我想写一个函数来标识特定HTML页面上的所有链接。我的想法是使用XPath,通过使用路径,例如
//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
选择所有节点,作为节点列表或节点集,然后在集合上迭代