繁体   English   中英

HTML Agility Pack问题(尝试从源代码解析字符串)

[英]HTML Agility Pack Question (Attempting to parse string from source)

我正在尝试使用敏捷包来解析各个页面中的某些信息。 我有点担心,如果需要的话,请告诉我,使用此功能可能对我所需的功能过于苛刻。 无论如何,我试图从杂色的傻瓜中解析一个页面,以基于股票报价来获得公司的名称。 我将解析多个页面以类似方式获取股票信息。

我要解析的HTML看起来像:

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

另外,我要解析的页面是: http : //caps.fool.com/Ticker/MSFT.aspx

因此,我想我的问题是,我该如何简单地从html中获取Microsoft Corp,我是否应该甚至使用敏捷性包来做这样的事情?

编辑:当前代码

public String getStockName(String ticker)
{
    String text ="";
    HtmlAgilityPack.HtmlWeb web = new HtmlAgilityPack.HtmlWeb();
    HtmlAgilityPack.HtmlDocument doc = web.Load("http://caps.fool.com/Ticker/" + ticker + ".aspx");

    var node = doc.DocumentNode.SelectSingleNode("/h1[@class='subHead']");
    text = node.FirstChild.InnerText.Trim();
    return text;
}

这将为您提供所有股票名称的列表,仅用于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)"
}

根据更新的问题进行编辑 -这应该适合您:

string text = "";
HtmlWeb web = new HtmlWeb();

string url = string.Format("http://caps.fool.com/Ticker/{0}.aspx", ticker);
HtmlAgilityPack.HtmlDocument doc = web.Load(url);

var node = doc.DocumentNode.SelectSingleNode("//h1[@class='subHead']");
text = node.FirstChild.InnerText.Trim();
return text;

使用xpath表达式选择元素,然后拾取文本。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM