我一直在使用HTML Agility Pack(这里推荐的很多),我喜欢它,但我有一些顾虑。
我正在开发一些新的应用程序,这些应用程序很重要的(X)HTML解析应该在未来几年内运行,所以我想依靠一个看起来像是保持与日常网络混乱的库。 我这样说是因为前段时间我读过一位HAP开发人员的帖子,说明他们在不久的将来遇到的问题,以及应该做的改变,但由于缺乏资源而难以实现。我asked in their Codeplex,它的维护者很可能确认了他们想要做什么以及他们有多少时间,我完全理解。
看看其他选项,Majestic 12 parser似乎是人们在这里推荐的另一个很好的选择...但是对其网站的快速访问告诉我们它的最后版本日期是2008年,现在超过3年。
所以我问...有没有人知道一个好的.Net HTML解析器,它背后似乎有很强的发展,因此它可以适应接下来几年所需的一切?它也必须是开源的。也许我要求太多......但为了以防万一。
不要误会我的意思,我喜欢HAP而且我现在对它非常满意,我只是害怕在一段时间内会发生什么,并且在依赖于必须持续的东西之前,我更愿意探索可用的东西。选项。
谢谢!
答案 0 :(得分:5)
我无法评论未来,但我可以告诉你一些关于我熟悉的Html Agility Pack的事实:
ENumerable<T>
支持BTW)。那时候,它的主要目标是能够解析现实世界的HTML。 2000年的真实世界HTML更多是HTML 3.2,有许多重叠标签(比如FORM 1),而不是HTML 4,5或XHTML。这意味着解析器实际上支持今天的标签汤几乎比10年前更好。所以,我不知道将来可能会破坏这种情况的HTML会发生什么?
答案 1 :(得分:2)
没有水晶球,所以没有人可以告诉你使用什么,确保它会停留很长时间。即使是商业级别的组件也可能过时,技术也会不断变化,因此所有供应商都应该尝试适应和发展,有时候会失败或落后于其他供应商。
我认为你能做的最好的事情之一是尽可能地抽象和封装HAP的使用,拥有包装类或分离层,以便将来何时以及如果你将采用另一个解析器,您的大多数应用程序将保持不变,并且您将仅在少数组件中进行本地化更改。
如果您有良好的单元测试覆盖率,您也会对更换感到满意,因为您的解决方案将能够证明您的稳定性和正确性。
我们将这种方法用于许多组件,日志框架,网格组件,数学库等,每当生态系统发生变化时,如果确实如此,我们会将一系列更改本地化到只有少数几个地方。
答案 2 :(得分:1)
项目后有119,783次下载和835人,我不得不认为某人将继续推动HTML Agility Pack向前推进以跟上标准。如果我们相信开源软件带来的所有好处,我们应该能够相信改进软件可以是一种协作努力。
当然很难预测未来,但我选择HTML Agility Pack作为最近的项目仅仅是因为它的整体受欢迎程度(并且每个人似乎都推荐它)。到目前为止,这是一次愉快的经历。