web-dev-qa-db-ja.com

XPathを使用してリンクテキストでリンクURLを見つけるにはどうすればよいですか?

整形式 XHTML ページがあります。リンクされているテキストがあるときに、リンクのリンク先URLを見つけたい。

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

XPath 式が必要です。programming questions siteが与えられた場合、http://stackoverflow.comを与え、newsを与えます。 http://cnn.comを提供します。

86
flybywire

次のようなものでなければなりません:

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

あなたには遅すぎますが、同じ質問を持つ他の人には...

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

もちろん、「プログラミング」は任意のテキスト断片にすることができます。

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

基本的に、必要なテキストを持つアンカーノード<a>を識別し、href属性を抽出します。

9
Brian Agnew

角括弧内のフレーズは、SQLのWHERE句と考えてください。

そのため、このクエリでは、「(a /)タグのテキストコンテンツが「(」)に等しい場所(//)である「a」タグの「href」属性(@)を選択します」プログラミングに関する質問サイト '"。

6
Baxter Tidwell

大文字と小文字を区別しない場合は、次を使用します。

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

translateは、PROGRAMMINGの大文字を小文字のプログラミングに変換します。

4
Abdo

hTMLアジリティパックを使用している場合は、getattributeValueを使用します。

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