HTML Parser für C#

Die letzten Wochen habe ich mich mit dem Parsen von HTML beschäftigt. Dazu habe ich mir drei Alternativen angesehen:

Zunächst habe ich an Reguläre Ausdrücke gedacht. mIr machen sie zwar keinen Spaß, aber man kann damit vieles erreichen … aber oft macht man es sich damit schwerer als nötig. Es gibt dazu ein schönes Zitat von Jamie Zawinski: „Some people, when confronted with a problem, think „I know, I’ll use regular expressions.“ Now they have two problems.“.

Dann habe ich noch zwei Bibliotheken gefunden:

Der Majestic-12 Html-Parser ist Kernbestandteil der Distributed Search Engine Majestic12. Interessant ist die Bibliothek hauptsächlich wegen der Geschwindigkeit mit der Sie Html parst. Was weniger schön ist, ist die Art und Weise wie geparst wird. Hier wird Tag für Tag geparst, ein Anchor (<a>) wird dann etwa in drei Teile zerlegt (a- geöffnet, Anchortext, a geschlossen).

Die zweite Library habe ich über Codeplex gefunden, den Html Agility Pack. Damit kann man schön mit foreach durch alle Tags gehen. Zusätzlich kann man hier noch per XPATH Expression festlegen welche Tags es sein sollen.

Mein Fazit:

  • Reguläre Ausdrücke sind mir zu fehleranfällig und für verschiedene Tags zu komplex.
  • Der Majestic Parser ist schnell aber zu unhandlich.
  • Der Agility Pack macht genau das was ich will und ich per XPATH auch ganz gut zu konfigurieren.

Share this content: