質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

4984閲覧

HtmlAgilityPackのSelectNodesで取得したaタグ内のhrefの中身(リンク先)を取得する方法

GiveAHand

総合スコア286

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2016/07/15 13:21

C#のWebBrowseを使ってアプリケーションを作成しています。

navigateで表示させたHTMLを、HtmlAgilityPackのSelectNodesでaタグだけ読み込んだのですが、href要素の取り出し方がわかりません。

innetTextでも、innerHTMLでも、aタグのテキストの取得になってしまいます。

ソースは、DocumentCompletedイベント内で、

C#

1HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 2doc.OptionAutoCloseOnEnd = false; 3doc.OptionCheckSyntax = false; 4doc.OptionFixNestedTags = true; 5 6doc.LoadHtml(webBrowser1.DocumentText); //webBrowserのHTMlを取得 7 8// aタグのノードを取得 9HtmlAgilityPack.HtmlNodeCollection tmps = 10 doc.DocumentNode.SelectNodes(@"//a"); 11 12// ノードの数分ループ 13foreach (HtmlAgilityPack.HtmlNode item in tmps) 14{ 15 HtmlAgilityPack.HtmlDocument tmp = new HtmlAgilityPack.HtmlDocument(); 16 tmp.LoadHtml(item.InnerHtml.ToString()); 17 18 //ここでaタグのhrefの内容を取り出したい。 19}

このように書いています。

tmpの中身はきちんと取れています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

HtmlAgilityPackは使ったことがないのですが、aタグのhrefを取得するだけならわざわざそれを使わずとも、

C#

1foreach(HtmlElement link in webBrowser1.Document.Links) 2{ 3 string href = link.GetAttribute("href"); 4 5 // hrefを処理 6}

こんな感じでできます。

投稿2016/07/15 16:25

catsforepaw

総合スコア5938

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

GiveAHand

2016/07/16 07:16

catsforepaw様 ご回答ありがとうございます。 なるほど。。。 ただ、ここではソースをはしょってますので書かれていないのですが、 画面内のHTMLの中から、あるIDのliに含まれるhrefだけを取り出したくて。。。 webBrowser1.Document.Links を使った方法だと、あくまでも表示されたHTML内のリンクを全て取得になってしまいますよね。。。
catsforepaw

2016/07/16 07:35

それならば、`HtmlDocument`クラスにはID指定で要素を取得できる`GetElementById`メソッドがあるので、それを使って、まずは対象の`li`タグ要素を取り出します。 そして、取り出した要素(HtmlElement)から`GetElementsByTagName("a")`で<a>タグを取得すれば良いと思います。
GiveAHand

2016/07/16 12:23

catsforepaw様 なるほど! うまくいきました! ありがとうございました!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問