Come selezionare tutti i link in una pagina utilizzando XPath

Voglio scrivere una funzione che identifica tutti i link in una particolare pagina HTML. La mia idea era di usare XPath, utilizzando un percorso come //body//a[x] e l’incremento di x passare attraverso il primo, il secondo, il terzo link nella pagina.

Mentre provando con Chrome, mi carica la pagina http://exoplanet.eu/ e nel Chrome Developer Tools JS console, l’ho chiamata $x("//body//a[1]"). Mi aspetto che il primo link nella pagina, ma questo restituisce un elenco di più di ancoraggio elementi. Chiamata $x("//body//a[2]") restituisce due elementi di ancoraggio. Chiamata $x("//body//a[3]") non restituisce nulla.

Speravo che l’incremento dell’ [x] ogni volta che mi darebbe ogni link unico, uno per uno, sulla pagina, ma sembrano essere raggruppati. Come posso riscrivere questo percorso in modo che I picconi ogni tag di ancoraggio, uno per uno?

InformationsquelleAutor njp | 2012-06-14

 

2 Replies
  1. 0

    Se si utilizza il percorso //body/descendant::a[1], //body/descendant::a[2] e così via è possibile selezionare tutti i discendenti a elementi di body elemento. O con il tentativo di aver bisogno dell’apparecchio, ad es. (//body//a)[1], (//body//a)[2] e così via.

    Di notare, tuttavia, che all’interno del browser con Javascript c’è un document.links raccolta nel modello a oggetti in modo che nessun XPath necessari per accedere al link.

  2. 6

    Tuo //body//a[1] dovrebbe essere (//body//a)[1] se si desidera selezionare il primo link nella pagina. L’ex espressione seleziona qualsiasi elemento che è il primo figlio del suo elemento principale.

    Ma sembra molto strana la cosa comunque. Perché avete bisogno di link uno per uno? Basta selezionare tutti loro, come un nodo o nodo, utilizzando //body//a, e poi iterare il set.

Lascia un commento