繁体   English   中英

使用xpath选择锚点时,Href属性为空

[英]Href attribute empty when selecting anchor with xpath

我在页面中有许多链接,如下所示:

<a class="plant_detail_link" href="plants/O7-01111"><h3>O7-01111</h3></a>

我可以使用以下xpath在我的页面中选择所有这些链接:

//a[@class='plant_detail_link']

我可以通常的方式提取类似每个链接的类的属性:

//a[@class='plant_detail_link']/@class

但是当我尝试使用相同的技术来提取href属性值时,我得到一个空列表:

//a[@class='plant_detail_link']/@href

有没有人有任何想法为什么会这样?

图像细节chrome开发者控制台xpath执行

编辑:

在这里查看整页HTML - http://pastebin.com/MAjTt86V

我相信这是一个铬虫。 您可以添加[index] .value来获取结果。 换句话说,href的$ x确实有效,但由于某种原因它不会在输出中返回结果。

例如,我在此页面的控制台中为“问题”按钮运行了这些$ x查询,并得到以下输出:

$x("//a[@id='nav-questions']/@href")
> []
$x("//a[@id='nav-questions']/@href")[0].value
> "/questions"

你可以使用这样的东西来获得一个可用的值数组:

var links = $x("//a[@target='_blank']/@href");
var linkArr = []; 
for (i in links) { linkArr.push(links[i].value)}

或者把它放在一个函数中:

function getHref(selector, value, $x) {
var links = $x("//a[@"+selector+"='"+value+"']/@href");
var linkArr = []; 
for (i in links) { linkArr.push(links[i].value)}; 
return linkArr; }

getHref("target","_blank", $x);

编辑不确定这是否会对你有帮助但是在chrome中添加这样的逗号会返回没有[index] .value的输出:

$x,("//a[@id='nav-questions']/@href")
> "//a[@id='nav-questions']/@href"

您可以尝试在xpath选择器中添加逗号,但我不确定它是否会对您的情况有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM