2012-06-14 118 views
2

我想編寫一個標識特定HTML頁面上所有鏈接的函數。我的想法是使用XPath,通過使用諸如//body//a[x]這樣的路徑並遞增x來遍歷頁面上的第一,第二和第三個鏈接。如何使用XPath選擇頁面上的所有鏈接

雖然在Chrome中嘗試了這一點,但我加載了頁面http://exoplanet.eu/,並在Chrome開發人員工具JS控制檯中調用$x("//body//a[1]")。我期望頁面上的第一個鏈接,但是這會返回多個錨元素的列表。調用$x("//body//a[2]")將返回兩個錨點元素。撥打$x("//body//a[3]")不會返回任何內容。

我希望每次遞增[x]都會給我一個一個的頁面上的每一個獨特的鏈接,但他們似乎被分組。我如何重寫這個路徑,以便我一個接一個地選擇每個錨標籤?

回答

-1

如果使用路徑//body/descendant::a[1]//body/descendant::a[2]等,則可以選擇body元素的所有後代a元素。或者嘗試使用括號,例如(//body//a)[1](//body//a)[2]等。

但是請注意,在使用Javascript的瀏覽器中,對象模型中有一個document.links集合,因此沒有需要訪問鏈接的XPath。

6

如果你想選擇頁面上的第一個鏈接,你的//body//a[1]應該是(//body//a)[1]。前一個表達式選擇任何其父元素的第一個子元素。

但無論如何,這似乎是一件很奇怪的事情。爲什麼你需要一個一個的鏈接?只需使用//body//a將它們全部選爲節點列表或節點集,然後遍歷該集。

相關問題