簡體   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