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

beautifulsoup c# html-agility-pack python

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

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

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

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

一般承认的答案

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

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

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

它的极端强大 - LINQ和lambda(第3部分) - HTML Agility Pack是Vijay Santhanam的博客文章让我迷上了它。


热门答案

我创建的库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




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因