.Net HTML解析器现在和将来

时间:2011-09-05 16:59:42

标签: .net html-parsing

我一直在使用HTML Agility Pack(这里推荐的很多),我喜欢它,但我有一些顾虑。

我正在开发一些新的应用程序,这些应用程序很重要的(X)HTML解析应该在未来几年内运行,所以我想依靠一个看起来像是保持与日常网络混乱的库。 我这样说是因为前段时间我读过一位HAP开发人员的帖子,说明他们在不久的将来遇到的问题,以及应该做的改变,但由于缺乏资源而难以实现。我asked in their Codeplex,它的维护者很可能确认了他们想要做什么以及他们有多少时间,我完全理解。

看看其他选项,Majestic 12 parser似乎是人们在这里推荐的另一个很好的选择...但是对其网站的快速访问告诉我们它的最后版本日期是2008年,现在超过3年。

所以我问...有没有人知道一个好的.Net HTML解析器,它背后似乎有很强的发展,因此它可以适应接下来几年所需的一切?它也必须是开源的。也许我要求太多......但为了以防万一。

不要误会我的意思,我喜欢HAP而且我现在对它非常满意,我只是害怕在一段时间内会发生什么,并且在依赖于必须持续的东西之前,我更愿意探索可用的东西。选项。

谢谢!

3 个答案:

答案 0 :(得分:5)

我无法评论未来,但我可以告诉你一些关于我熟悉的Html Agility Pack的事实:

  • 版本1.3是在2000年左右创建的,带有.NET Framework 1.1(这就是为什么这个版本缺少通用列表而I ENumerable<T>支持BTW)。那时候,它的主要目标是能够解析现实世界的HTML。 2000年的真实世界HTML更多是HTML 3.2,有许多重叠标签(比如FORM 1),而不是HTML 4,5或XHTML。这意味着解析器实际上支持今天的标签汤几乎比10年前更好。
  • 这意味着,与其他库不同,它的实现对... HTML 几乎一无所知,除了HTML由元素和属性组成之外。例如,它不知道FONT元素。元素(几乎)不透明,属性完全不透明。这就是未来的证明。
  • 我今天仍然在.NET 4中使用这个1.3版本。您可以使用今天的HTML页面完美地使用它。

所以,我不知道将来可能会破坏这种情况的HTML会发生什么?

答案 1 :(得分:2)

没有水晶球,所以没有人可以告诉你使用什么,确保它会停留很长时间。即使是商业级别的组件也可能过时,技术也会不断变化,因此所有供应商都应该尝试适应和发展,有时候会失败或落后于其他供应商。

我认为你能做的最好的事情之一是尽可能地抽象和封装HAP的使用,拥有包装类或分离层,以便将来何时以及如果你将采用另一个解析器,您的大多数应用程序将保持不变,并且您将仅在少数组件中进行本地化更改。

如果您有良好的单元测试覆盖率,您也会对更换感到满意,因为您的解决方案将能够证明您的稳定性和正确性。

我们将这种方法用于许多组件,日志框架,网格组件,数学库等,每当生态系统发生变化时,如果确实如此,我们会将一系列更改本地化到只有少数几个地方。

答案 2 :(得分:1)

项目后有119,783次下载和835人,我不得不认为某人将继续推动HTML Agility Pack向前推进以跟上标准。如果我们相信开源软件带来的所有好处,我们应该能够相信改进软件可以是一种协作努力。

当然很难预测未来,但我选择HTML Agility Pack作为最近的项目仅仅是因为它的整体受欢迎程度(并且每个人似乎都推荐它)。到目前为止,这是一次愉快的经历。