VS2015 C# コマンドラインアプリ作成について教えてください。

以下のURLを参照してclassの値を撮ろうとしています。

http://www.atmarkit.co.jp/fdotnet/dotnettips/687nondispbrowser/nondispbrowser.html

例として取得しようとしているものは以下のurl
http://ejje.weblio.jp/content/solid


<td><div ID=ePsdDl><a href="http://www.weblio.jp/img/dict/kenej/audio/S-D49418A_E-D4965AC.mp3" id="audioDownloadPlayUrl"><i class="fa fa-play-circle"></i><br></div></td></tr><tr><td><span>クイック再生</span></td><td><span>プレーヤー再生</span></td></tr></table>
</td>

http://www.weblio.jp/img/dict/kenej/audio/S-D49418A_E-D4965AC.mp3です。

上記で参考にしたソースではこのa hrefは検出しませんでした。div,td等の下にaがある場合は検出しないのでしょうか?
また、その場合はこのケースではどのタグで段階的に検出すればいいのでしょうか?

回答の条件
  • 1人1回まで
  • 13歳以上
  • 登録:2017/04/07 14:00:42
  • 終了:2017/04/07 22:24:06

ベストアンサー

id:a-kuma3 No.1

a-kuma3回答回数4595ベストアンサー獲得回数19342017/04/07 20:08:56

ポイント200pt

上記で参考にしたソースではこのa hrefは検出しませんでした。div,td等の下にaがある場合は検出しないのでしょうか?

そんなことはありません。GetElementsByTagName メソッドは、タグの階層に関係なく、ごそっと取得します。

質問の文面で気になるのは、以下のようなところ。

  • 「上記で参考にした」ということは、どこかを変更しているはずで、その部分がまずいのかも
  • 「URLを参照してclassの値を撮ろうと」とあるので、前の質問の結果をベースにしてて、class 属性を取ろうとしているのではないだろうか
  • 取得したいと言ってる .mp3 な URL を持っている A タグには、class 属性がついてないのに、どのようにピンポイントで取ろうとしているのだろう

んで、.mp3 な URL を持つ A タグには、id 属性がついているので GetElementById メソッドを使います。
こんな感じ。

    NonDispBrowser ndb = new NonDispBrowser();
    ndb.NavigateAndWait("http://ejje.weblio.jp/content/solid");

    HtmlDocument doc = ndb.Document;

    HtmlElement e = doc.GetElementById("audioDownloadPlayUrl");
    if (! string.IsNullOrEmpty(href)) {
        string href = e.GetAttribute("href"); // HREF属性の値
        Console.WriteLine(href);
    }
id:mai_mai_mail

ご教授いただいた方法で解決しました。ありがとうございます。

2017/04/07 22:23:52

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません