為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合法嗎? 是的,了解原因