HTML敏捷包问题(试图从源代码解析字符串)
本文关键字:源代码 字符串 包问题 问题 HTML | 更新日期: 2023-09-27 17:49:42
我正在尝试使用Agility包来解析来自不同页面的某些信息。我有点担心,使用这个可能是多余的,我需要什么,如果是这种情况,请随时让我知道。无论如何,我正试图解析一个页面从杂牌傻瓜得到一个公司的名称基于股票。我将解析几个页面,以类似的方式获取股票信息。
我要解析的HTML看起来像:
<h1 class="subHead">
Microsoft Corp <span>(NASDAQ:MSFT)</span>
</h1>
另外,我要解析的页面是:http://caps.fool.com/Ticker/MSFT.aspx
所以,我想我的问题是我如何从html中简单地获得微软公司,我甚至应该使用敏捷包来做这样的事情吗?
Edit:当前代码
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;
}
这将为您提供所有股票名称的列表,对于您的示例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)"
}
编辑基于更新的问题-这应该为您工作:
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);
}