web-dev-qa-db-fra.com

Comment trouver l'URL du lien par le texte du lien avec XPath?

J'ai une page bien formée XHTML . Je souhaite trouver l'URL de destination d'un lien lorsque le texte associé est lié.

Exemple

<a href="http://stackoverflow.com">programming questions site</a>
<a href="http://cnn.com">news</a>

Je veux une expression XPath telle que si donné programming questions site ça donnera http://stackoverflow.com et si je lui donne news cela donnera http://cnn.com.

86
flybywire

Devrait être quelque chose de similaire à:

 // a [text () = 'text_i_want_to_find']/@ href 
138
Badaro

Trop tard pour vous, mais pour quiconque ayant la même question ...

//a[contains(text(), 'programming')]/@href

Bien entendu, la "programmation" peut être n'importe quel fragment de texte.

73
MaDeuce
//a[text()='programming quesions site']/@href 

qui identifie fondamentalement un noeud d'ancrage <a> qui contient le texte souhaité et extrait l’attribut href.

9
Brian Agnew

Considérez la phrase entre crochets comme une clause WHERE dans SQL.

Donc, cette requête dit "sélectionnez l'attribut" href "(@) d'une balise" a "qui apparaît n'importe où (//), mais uniquement là où (la phrase entre crochets) le contenu textuel de la balise" a "est égal à" site de questions de programmation '".

6
Baxter Tidwell

Pour les contenus insensibles à la casse, utilisez ce qui suit:

//a[contains(translate(text(),'PROGRAMMING','programming'), 'programming')]/@href

translate convertit les majuscules de PROGRAMMATION en programmation minuscule.

4
Abdo

si vous utilisez le pack d'agilité HTML, utilisez getattributeValue:

$doc2.DocumentNode.SelectNodes("//div[@class='className']/div[@class='InternalClass']/a[@class='InternalClass']").GetAttributeValue("href","")
1
Miguel Vaz