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中簡單地獲取Microsoft Corp,我是否應該使用敏捷包來做這樣的事情?

編輯:當前代碼

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

一般承認的答案

這將為您提供所有股票名稱的列表,僅適用於Microsoft的示例Html:

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合法嗎? 是的,了解原因