Bessere Option für Web Scraping (HTMLAgilityPack oder Python + BeautifulSoup) für C # -Programmierer

beautifulsoup c# html-agility-pack python

Frage

Ich bin ein .NET Programmierer. Ich muss an einem Web-Scraping-Projekt arbeiten. Ich möchte eine Vorstellung von HTMLAgilityPack vs BeautifulSoup bekommen.

Viele Leute sagen, BeautifulSoup ist viel besser als HTMLAgilityPack. Aber dafür muss ich Python lernen.

Also, meine Frage ist, ist es für mich vernünftig Python und BeautifulSoup zu lernen oder mit C # und HTMLAgilityPack weiterzumachen?

Jeder andere Vorschlag ist herzlich willkommen.

Akzeptierte Antwort

In der C # .NET Welt würde ich das HTMLAgilityPack empfehlen, weil es sehr flexibel ist. Sie können damit schlecht formatiertes HTML so manipulieren, als wäre es wohlgeformtes XML, so dass Sie XPath verwenden oder einfach über Knoten iterieren können.

BeautifulSoup ist ein großartiger Weg, HTML-Scraping zu machen, aber aus Entwicklerperspektive ist es nicht wirklich einfach, eine komplett neue Technologie zu entwickeln. Daher würde ich HTMLAgilityPack wärmstens empfehlen, wenn Sie ein .NET-Typ sind.

Sie können mit der Kombination von HTML Agility Pack , regulären Ausdrücken und XDocument (LINQ -> XMLy stuff) großen Erfolg erzielen.

Es ist extremely mächtig - LINQ und Lambda (Teil 3) - HTML Agility Pack ist ein Blogbeitrag von Vijay Santhanam, der mich dazu gebracht hat.


Beliebte Antwort

CsQuery , eine von mir erstellte Bibliothek, ist eine relativ neue Alternative zu Html Agility Pack. Es bietet folgende Vorteile:

  • Komplette CSS3-Selektor-Unterstützung, die für die meisten Leute bereits bekannt und viel einfacher ist als Xpath, und genau so, wie Sie bereits für den Client programmiert haben
  • Die jQuery API, aus den gleichen Gründen
  • Verwendet den validator.nu HTML - Parser, einen voll HTML5 konformen Parser. Dies ist die gleiche Code-Basis, die von Gecko-basierten Browsern (Firefox) verwendet wird, was bedeutet, dass sie genau das gleiche DOM wie der Web-Browser erzeugen sollte, selbst bei einem typischen schlechten / ungültigen Markup.
  • Indexiert Dokumente, die Selektoren extrem schnell machen, selbst bei sehr großen Dokumenten. HAP muss den gesamten Dokumentbaum für jeden Selektor durchsuchen, wodurch es für komplexe Selektoren und große Dokumente sehr langsam wird.
  • Umfassende Unit-Testabdeckung - alle Tests von jQuery und Sizzle (der jQuery-CSS-Auswahl-Engine) wurden nach C # portiert.

Nachteile:

  • Im Moment wird nur .NET 4+ Full Framework kompiliert, während HAP Builds für die meisten .NET Umgebungen erstellt.

Sie können es von nuget erhalten: Install-Package CsQuery .




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum