2

我是一名 .NET 程序员。我需要从事网络抓取项目。我想了解 HTMLAgilityPack 与 BeautifulSoup 的区别。

很多人说,BeautifulSoup 比 HTMLAgilityPack 好很多。但为此,我需要学习 Python。

所以,我的问题是,我学习 Python 和 BeautifulSoup 还是继续 C# 和 HTMLAgilityPack 是否合理?

任何其他建议都受到热烈欢迎。

4

2 回答 2

6

我创建的库CsQuery是 Html Agility Pack 的一个相对较新的替代品。它具有以下优点:

  • 完整的 CSS3 选择器支持,对于大多数人来说,它已经很熟悉并且比 xpath 容易得多,并且与您已经为客户端编写代码的方式相同
  • jQuery API,出于同样的原因
  • 使用validator.nu HTML 解析器,一个完全符合 HTML5 的解析器。这与基于 Gecko 的浏览器 (Firefox) 使用的代码库相同,这意味着它应该生成与 Web 浏览器完全相同的 DOM,即使对于通常错误/无效的标记也是如此。
  • 索引文档使选择器非常快,即使在非常大的文档上也是如此。HAP 必须遍历每个选择器的完整文档树,这对于复杂的选择器和大型文档来说非常慢。
  • 广泛的单元测试覆盖 - 来自 jQuery 和 Sizzle(jQuery CSS 选择引擎)的所有测试都已移植到 C#。

缺点:

  • 目前仅适用于编译 .NET 4+ 完整框架,而 HAP 已为大多数 .NET 环境构建。

您可以从 nuget: 获取它Install-Package CsQuery

于 2012-10-17T11:35:48.550 回答
1

在 C# .NET 世界中,我会推荐 HTMLAgilityPack,因为它非常灵活。它使您可以像处理格式良好的 XML 一样操作格式不正确的 HTML,因此您可以使用 XPath 或只遍历节点。

BeautifulSoup 是进行 HTML 抓取的好方法,但从开发人员的角度来看,要亲身体验一项全新的技术并不容易。因此,如果您是 .NET 人员,我强烈推荐 HTMLAgilityPack。

结合HTML Agility Pack、正则表达式和 XDocument(LINQ -> XMLy 的东西),您可以获得巨大的成功

它非常强大 - LINQ 和 lambda(第 3 部分) - HTML Agility Pack是 Vijay Santhanam 的一篇博文,让我着迷。

于 2012-10-17T05:03:10.240 回答