为C#程序员提供更好的Web抓取选项(HTMLAgilityPack或Python + beautifulsoup)

时间:2012-10-17 04:51:58

标签: c# python beautifulsoup html-agility-pack

我是一名.NET程序员。我需要处理网络抓取项目。我想了解HTMLAgilityPack vs BeautifulSoup。

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

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

热烈欢迎任何其他建议。

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

在C#.NET世界中,我推荐HTMLAgilityPack,因为它非常灵活。它允许您操作格式错误的HTML,就像它是格式良好的XML一样,因此您可以使用XPath或只是迭代节点。

BeautifulSoup是一种很好的HTML抓取方式,但从开发人员的角度来看,实现全新技术并不是一件容易的事。所以如果你是一个.NET人,我强烈推荐HTMLAgilityPack。

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

这是极端强大的 - LINQ and lambda (part 3) - HTML Agility Pack 是Vijay Santhanam撰写的一篇博文,让我迷上了它。