解析HTML以使用C#获取内容
我正在编写一个抓取一组网页的应用程序。 而不是采取页面的整个源代码,我想采取所有内容并存储,并能够将页面作为纯文本存储在数据库中。 内容将在其他应用程序中使用,而不是由用户阅读,因此不需要它完全是人类可读的。
起初,我正在考虑使用正则表达式,但我无法控制网页的有效性,并且很有可能没有正则表达式会给我内容。
如果我在字符串中有源代码,我怎样才能将该源代码串转换为C#中的内容?
它不是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();
请不要自己解析HTML! 您不能仅使用标准正则表达式来解析HTML – 这是不可能的。
那里有大量的免费图书馆。 HTML Agility Pack是.NET世界上最好的免费软件之一 。
HTML Agility Pack也支持格式错误的文档,这是正则表达式或其他基本解析(如XML)几乎不会做的事情。
下面的函数将帮助从html字符串中删除所有HTML标记,脚本,CSS,样式并将其转换为纯文本。 查看源
private string GetPlainTextFromHtml(string htmlString) { string htmlTagPattern = "<.*?>"; var regexCss = new Regex("(\\