home

JustHTML – Vollständiger Python‑Parser mit 100 % html5lib‑Testabdeckung

Key Takeaway

Durch den systematischen Einsatz von Coding‑Agents konnte ich einen Python‑basierten HTML5‑Parser entwickeln, der sämtliche Tests von html5lib bestanden hat – obwohl er anfangs weniger als 1 % der Fälle korrekt handhabte – und lernte gleichzeitig, wie man komplexe Parsing‑Algorithmen wie das Adoption‑Agency‑Verfahren eigenständig debuggt.

Summary

  • Projekt‑Überblick: Release von JustHTML, einer Python‑Parserbibliothek ohne externe Abhängigkeiten, die das komplette html5lib‑Test‑Suite (100 %) passiert und CSS‑Selector‑Abfragen unterstützt.
  • Motivation: Nutzung der großen Test‑Suite von html5lib, um von Coding‑Agents ein selbstlernendes System zu bauen.
  • Erstschritt – One‑Shot‑Parser: Ausgangspunkt, aber nur grob funktionsfähig.
  • Integration von Tests: Verbindung mit html5lib‑tests, erste Pass‑Rate < 1 %.
  • Iterativer Aufbau: Ausbau auf ca. 30 % Pass‑Rate durch Refactorings und Bugfixes.
  • Modularisierung in Tag‑Handler‑Klassen.
  • Erreichen von 100 % bei moderneren AIs wie Claude Sonnet 3.7.
  • Benchmarking: Erkenntnis, dass JustHTML ca. 3 × langsamer als html5lib ist.
  • Performance‑Optimierungen: Rewrite‑Tokenisierung in Rust (nur knapp schneller).
  • Entdeckung von html5ever (Rust‑basiert, schnell). Pivot zum Portieren von html5ever‑Logik nach Python.
  • Code‑Reduktion: Mithilfe von Coverage‑Analyse (100 %) entfernte man ungenutzte Teile – Ergebnis: Verkürzung der Tree‑Builder‑Codezeile von 786 auf 453, Geschwindigkeitsgewinn.
  • Fuzzing: Erzeugte 3 Mio. gefuzzte Webseiten, behebt jedes gefundene Problem und schreibt Test‑Add‑Ons.
  • Vergleich mit anderen Parsers: Keine andere Bibliothek erreicht 90 % Coverage; lxml 1 % und html5lib 88 %.
  • Bereitstellung als Library: CI, Releases via GitHub, README, Query‑API, Selector‑API (Beispiel‑Code).
  • Namensänderung: TurboHTML → JustHTML, Fokus auf Vollständigkeit statt Geschwindigkeit.
  • Agent vs. Entwickler: Der Autor war der Hauptinteraktor – er korrigierte Fehler, bot Feedback, während der Agent den eigentlichen Code schrieb.

Related queries:

  • Was sind die Aufgaben des Adoption Agency Algorithmus in HTML‑Parsing?
  • Wie hat Claude Sonnet 3.7 die Entwicklung von JustHTML unterstützt?
  • Warum bleibt JustHTML trotz 100 % Tests langsamer als html5lib?

Quelle: friendlybit.com/python/writing-justhtml-with-coding-agents/