C#是否有LINQ to HTML或其他一些优秀的.Net HTML操作API?

我有一个C#WPF应用程序需要使用作为HTML表格在网页上公开的数据。

从这个url获得灵感后,我尝试使用Linq to Xml来解析Html文档,但这只适用于HTML文档forms非常好(并且其中没有任何注释或HTML实体)。 我已经设法使用这种技术获得了一个有效的解决方案,但它远非理想。

我正在寻找一个用于解析HTML的解决方案。 我以前曾经破解过“解决方案”,但它们很脆弱。 我正在寻找一种解析/操作文档的强大方法。 理想情况下,我喜欢能让任务变得像Javascript / JQuery一样简单的东西。

有谁知道用于解析/操作HTML的好的.Net库或实用程序?

即使它不是基于LINQ的, 我建议从CodePlex研究HTML Agility Pack 。

注意:Html Agility Pack现在支持Linq to Objects(通过LINQ to Xml Like界面)

从HTML Agility Pack页面:

这是一个敏捷的HTML解析器,它构建一个读/写DOM并支持普通的XPATH或XSLT(你实际上不需要理解XPATH或XSLT来使用它,不用担心……)。 它是一个.NET代码库,允许您解析“out of the web”HTML文件。 解析器非常容忍“真实世界”格式错误的HTML。 对象模型非常类似于提出System.Xml,但对于HTML文档(或流)。

这里有一个LINQ to HTML库:

http://www.superstarcoders.com/linq-to-html.aspx

HTML很少有足够的格式,您可以可靠地使用LINQ to XML。 可以想象你可能会发现一个HTML“清洁器”可以很好地修复格式化以便阅读,但是没有人知道它会有多强大。

我假设这是一个“screenscraper”,它从一个你无法控制的HTML表中读取。 在这种情况下,不要强调坚固性,屏幕刮擦本质上是脆性的。 如果您的要求是一成不变的,那么如果/当您正在刮取的HTML发生变化时,可以将刮刀设计为易于更新。

我必须在最近的项目中执行此操作,并使用LINQ to XML。 如果你知道它总是干净的XHTML那么你可以很容易递归地复制DOM,但我使用DevComponents HTMLDocument类库( http://www.devcomponents.com/htmldoc/ )将HTML转换为XML然后拉进入XElement。 这减少了将HTML放入XElement层次结构的挑战。 一个警告是它在脚本元素上窒息,所以我通过暴力删除它们。

///  /// Extracts an HtmlDocument DOM to an XElement DOM that can be queried using LINQ to XML. ///  /// HtmlDocument containing DOM of page to extract. /// HTML content as  for consumption by LINQ to XML. public XElement ExtractXml(HtmlDocument htmlDocument) { XmlDocument xmlDoc = htmlDocument.ToXMLDocument(); // Find and remove all script tags from XML DOM or LINQ to XML will choke on XElement.Parse(XmlDocument). IList nodes = new List(); foreach (XmlNode node in xmlDoc.GetElementsByTagName("script")) nodes.Add(node); foreach (XmlNode node in nodes) node.ParentNode.RemoveChild(node); return XElement.Parse(xmlDoc.OuterXml); } 

我在这里发布了一些提供“LINQ to HTML”function的代码:

寻找C#HTML解析器