解析HTML以使用C#获取内容

Mik*_*e B 9 c# string html-parsing

我正在编写一个抓取一组网页的应用程序.我不想获取页面的整个源代码,而是将所有内容存储起来并存储,并能够将页面作为纯文本存储在数据库中.内容将在其他应用程序中使用,而不是由用户阅读,因此不需要它完全是人类可读的.

起初,我正在考虑使用正则表达式,但我无法控制网页的有效性,并且很有可能没有正则表达式会给我内容.

如果我在字符串中有源代码,我怎样才能将该源代码串转换为C#中的内容?

Mar*_*ell 20

它不是100%清楚你想要什么,但我假设你想要文本减去加价; 所以:

string html;
// obtain some arbitrary html....
using (var client = new WebClient()) {
    html = client.DownloadString("http://stackoverflow.com/questions/2038104");
}
// use the html agility pack: http://www.codeplex.com/htmlagilitypack
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
StringBuilder sb = new StringBuilder();
foreach (HtmlTextNode node in doc.DocumentNode.SelectNodes("//text()")) {
    sb.AppendLine(node.Text);
}
string final = sb.ToString();
Run Code Online (Sandbox Code Playgroud)


Eil*_*lon 7

拜托,请不要解析HTML自己!您不能仅使用标准正则表达式来解析HTML - 这是不可能的.

那里有大量的免费图书馆.HTML Agility Pack是.NET世界上最好的免费软件之一.

HTML Agility Pack也支持格式错误的文档,这是正则表达式或其他基本解析(如XML)几乎永远不会做的事情.