HTML Agility Packの質問(ソースから文字列を解析しようとしています)

c# html html-agility-pack html-parsing

質問

私はさまざまなページから情報の特定のビットを解析するためにAgilityパックを使用しようとしています。私は、これを使用することは、私が必要とするものについて過度のものになる可能性があることを心配しています。とにかく、ティッカーに基づいて会社の名前を得るために、雑然としたばかからページを解析しようとしています。私は同様の方法で株式情報を取得するためにいくつかのページを解析します。

私が解析したいHTMLは以下のようになります:

<h1 class="subHead"> 
    Microsoft Corp <span>(NASDAQ:MSFT)</span>
</h1>

また、私が解析したいページはhttp://caps.fool.com/Ticker/MSFT.aspxです。

だから私は私の質問は、単にhtmlからマイクロソフト社を取得するだけで、私もこのようなことをするためにアジリティパックを使用する必要がありますか?

編集:現在のコード

<h1 class="subHead"> 
    Microsoft Corp <span>(NASDAQ:MSFT)</span>
</h1>

受け入れられた回答

これはあなたのすべての株価のリストを、あなたのサンプルHTMLのためだけにMicrosoftの:

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.Load("test.html");

var nodes = doc.DocumentNode.SelectNodes("//h1[@class='subHead']");
foreach (var node in nodes)
{
    string text = node.FirstChild.InnerText; //output: "Microsoft Corp"
    string textAll = node.InnerText; //output: "Microsoft Corp (NASDAQ:MSFT)"
}

更新された質問に基づいて編集 - これはあなたのために働くはずです:

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.Load("test.html");

var nodes = doc.DocumentNode.SelectNodes("//h1[@class='subHead']");
foreach (var node in nodes)
{
    string text = node.FirstChild.InnerText; //output: "Microsoft Corp"
    string textAll = node.InnerText; //output: "Microsoft Corp (NASDAQ:MSFT)"
}

人気のある回答

xpath式を使用して要素を選択し、テキストをピックアップします。

 foreach (var element in doc.DocumentNode.SelectNodes("//h1[@clsss='subHead']/span"))
 {
    Console.WriteLine (element.InnerText);
 } 



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ