trafilatura ließ auf denselben Testseiten weniger markierte Boilerplate durch als Readability

Zuletzt aktualisiert am August 20, 2026
trafilatura ließ auf denselben Testseiten weniger markierte Boilerplate durch als Readability
KI-Zusammenfassung
trafilatura ist ein Python-Content-Extraktor ohne Browser. Bei den in diesem Artikel markierten Testseiten ist Mozilla Readability der einzige Vergleichspartner mit derselben HTML-Grundlage; trafilatura ließ eine von 17 markierten Boilerplate-Einheiten durch, Readability fünf. Browser-gestützte Tools tauchen hier nur im Zusammenhang mit dem Installations- und Laufzeitaufwand auf und wurden auf diesen Seiten nicht nach Qualität bewertet. Die Kernaufgabe ist die Extraktion von Hauptinhalten: HTML rein, artikelorientierter Text und Metadaten heraus, während Seiten-Elemente per Heuristik ausgefiltert werden. Die Ausgabe lässt sich als JSON und in anderen Formaten serialisieren, aber es entsteht kein frei definierbares Zeilenschema und auch kein Satz wiederholter, typisierter Katalogdatensätze.

trafilatura ist ein Python-Content-Extractor ohne Browser. Auf den gelabelten Testfällen hier hat es nur einen ernstzunehmenden Gegner bei gleicher HTML-Extraktionsqualität: Mozilla Readability. trafilatura ließ 1 von 17 annotierten Boilerplate-Einheiten durchrutschen, Readability 5. Browserbasierte Tools tauchen nur als Kontext zum Deployment-Fußabdruck auf und wurden hier nicht qualitativ getestet.

trafilatura title and 3/3 paragraphs retained

Kernaufgabe: Hauptinhalt-Extraktion. HTML rein, artikelorientierter Text und Metadaten raus, Seitenrahmen per Heuristik gefiltert. Die Ausgabe lässt sich als JSON und andere Formate serialisieren, aber es entsteht kein frei definiertes Zeilenschema und keine typisierten Katalog-Datensätze. Getestet wurde Version 2.1.0. JavaScript wird nicht ausgeführt, und der Vergleich mit Readability zeigt einen Trade-off zwischen Präzision und Vollständigkeit – keinen klaren Sieg in jeder Kategorie.

Wo trafilatura passt – und was es bewusst nicht tut

trafilatura beschreibt sich selbst als Python- und Kommandozeilen-Tool, um Text und Metadaten aus dem Web zu sammeln – Crawling, Scraping, Extraktion – mit Ausgabe als CSV, JSON, HTML, Markdown, TXT oder XML. Ein breites Versprechen. In der Praxis ist der tragende Teil enger und schärfer: Es nimmt ein HTML-Dokument und liefert den Hauptinhalt zurück, befreit vom umgebenden Seitenrahmen.

System diagram: Where trafilatura fits, and what it refuses to do

Das Denkmodell erklärt Stärke und Grenze zugleich. Die meisten Scraper sind selektorgetrieben: „hol das Element mit der Klasse product-price", und sie liefern, was dort steht. trafilatura macht es umgekehrt. Es liest das ganze Dokument und entscheidet per Inhaltsheuristik, welche Blöcke Artikel und welche Boilerplate sind – ohne von Ihnen geschriebenen Selektor. Deshalb braucht es keine seitenspezifischen Regeln. Und genau deshalb liefert es keinen strukturierten Katalog: kein Schema, keine typisierten Zeilen, nur „hier ist der relevante Text". Ein Extraktor, kein Parser, den man gezielt ansetzt.

Es braucht auch keine separat heruntergeladene Browser-Laufzeit. Der Abhängigkeitsbaum enthält aber Plattform-Wheels wie lxml – „kein Browser-Download" heißt nicht Source-only oder komplett native Installation.

Einrichtung: kleine Abhängigkeitsmenge, keine Browser-Installation

pip install trafilatura in einer frischen virtualenv unter Python 3.14 installierte 17 Pakete; das größte Wheel war lxml mit 8,6 MB, laut pip-install-trafilatura.log. Keine separate Browser-Installation oder ein Post-Install-Browser-Befehl war nötig.

Zum Vergleich: Das Scrapling-Paket in derselben Research-Base brauchte vier separate pip-Aufrufe für funktionierende Fetcher und landete bei 26 Paketen – zwei davon 42,2-MB-Playwright-Wheels (tools/scrapling/artifacts/logs/pip-install-scrapling.log), noch vor jedem Browser-Binary-Download. Crawlee maß den separaten Chromium-Download bei rund 81,7 MiB (tools/crawlee/research-materials.md). Diese Tools leisten mehr, es ist also kein fairer Fähigkeitsvergleich, zeigt aber die Last für Festplatte und CI-Cache. Die von pip gelieferte Version (2.1.0) entspricht dem aktuellen Release – kein „veraltet getestet"-Vorbehalt bei den folgenden Zahlen.

Praxis: Was der Extraktor tatsächlich zurückgegeben hat

trafilatura boilerplate cleanup

Ich habe es gegen Testfälle laufen lassen, die gezielt Stärken und Grenzen treffen; die Rohausgaben liegen im Benchmark-Repo. Der Artikeltest hat mich überzeugt.

Ich nahm eine lokale Artikel-Fixture und verpackte den Inhalt in Rauschen: Login-Hinweis, „Subscribe"-Nag, Navigationslinks, Copyright-Fußzeile – das übliche Boilerplate, das ein naiver Scraper mitzieht. trafilatura gab Titel plus alle 3 von 3 Textabsätzen zurück, jeder Boilerplate-Marker fehlte. Zusätzlich zog es Autor und Datum korrekt aus den Metadaten. Das vollständige Ergebnis liegt in results/local_article.json.

Dasselbe HTML wurde als Plain Text, Markdown und JSON exportiert – alternative Serialisierungen desselben Extraktionswegs, nicht Beweis eines simultanen Aufrufs. JSON bündelt hier Text und Metadaten, keine frei definierten, wiederholten Datensätze.

Der komplette erste Lauf zum Selbstprüfen:

TestfallErgebnisLaufzeitBeleg
Lokaler Artikel, umschlossen von Nav/Login/Subscribe/CopyrightTitel + 3/3 Absätze, keine Boilerplate-Abschnitte durchgesickert, Autor Thunderbit Research Lab, Datum 2026-07-090.007 slocal_article.json
Lokaler Produktkatalog12 Produktnamen und deren 12 Preise als reiner Text, 0 strukturierte Zeilen, 478 Zeichen0.064 slocal_catalog_extraction.txt
Seite mit HTTP 500fetch_url gab None zurück, keine Exception30.012 slocal_failure_500.json
Books-to-Scrape-Produktseite (öffentlich)1.324 Zeichen sauberer Text, plus Markdown-Pendant0.753 spublic_books_product.txt / .md

Jede Zeile stammt aus artifacts/raw/trafilatura-test-summary.json – trafilatura 2.1.0, Python 3.14, macOS arm64, ein Lauf auf einer Maschine. Die Zeiten sind Beobachtungen, kein Benchmark.

Bei der 500er-Fixture gab fetch_url nach rund 30 Sekunden None zurück, während benachbarte lokale Endpunkte schnell antworteten. Der Lauf belegt die Verzögerung, nicht ob Retry/Backoff, ein fester Timeout oder ein anderer interner Pfad die Ursache war. Ein unterstützter Timeout-Parameter für fetch_url wurde nicht verifiziert; die belegte Kontrolle ist, mit selbst kontrolliertem Client zu fetchen und das HTML an trafilatura zu übergeben.

trafilatura catalog text-only boundary

Dieselben Tests zeigen auch drei Grenzen.

Erstens, am wichtigsten: trafilatura ist ein Content-Extractor, kein strukturierter Scraper. Auf einer Produktkatalog-Fixture lieferte es alle 12 Produktnamen als Text und exakt 0 strukturierte Zeilen (478 Zeichen, laut results/local_catalog_extraction.txt). Auch die Preise kamen durch, von $18.00 bis $51.00, je in eigener Zeile unter dem Namen. Alles Gewünschte steckt in der Ausgabe – nichts davon ist ein Feld. Für [{name, price, rating}, …] ist das das falsche Werkzeug, und keine Konfiguration ändert das – Designentscheidung, kein Bug.

trafilatura no JavaScript render boundary

Zweitens: Es rendert kein JavaScript. Nur statisches HTML. Bei einer client-gerenderten Seite bekommen Sie, was der Server vor der JS-Ausführung sendet – oft nichts Brauchbares. Kombinieren Sie es mit einem Renderer bei JS-lastigen Zielen; diesen Teil übernimmt trafilatura nicht.

Drittens ein Vorbehalt zu meiner Evidenz: Der erste öffentliche Test nutzte einen Produktbeschreibungs-Block, keinen echten Nachrichtenartikel, weil die Sandbox keine News-Seiten hat. Das Artikel-Bereinigungsergebnis oben stammt aus einer kontrollierten lokalen Fixture. Ich vertraue ihm – die Boilerplate-Entfernung ist eindeutig –, wollte aber keine Produktseite als Beweis für Newsroom-Extraktion ausgeben, also blieb das offen. Ein Folgelauf am 2026-07-14 schloss die Lücke, Ergebnisse im nächsten Abschnitt.

Plausibilitätscheck auf echten Seiten

trafilatura boilerplate labels removed

Zwei echte Seiten wurden einmal abgerufen, als Offline-Fixtures mit SHA-256-Hashes gespeichert und ohne Netzwerkzugriff erneut ausgeführt. Zeiten und gelabelte Ground Truth fehlen. Das ist ein Plausibilitätscheck für Boilerplate, kein Fidelity-Score.

Realer Artikel-TestfallRoh-HTMLExtrahierter BodyBody/rawEntfernte Page-Furniture-Markertitledatehostnameauthorsitename
Wikipedia, „Web scraping"230.049 Bytes26.673 Bytes0.1164 von 4ja2005-09-17wikipedia.orgnullnull
Wikinews, „7th Heaven" (archiviert)79.716 Bytes2.200 Bytes0.0285 von 5ja2005-11-29wikinews.orgnullnull

Beide Zeilen stammen aus artifacts/results/trafilatura-fidelity-summary.json. Geprüft: „Jump to content", „Privacy policy", „Powered by MediaWiki", „This page was last edited", plus „free news source" auf der Wikinews-Seite – alle entfernt, keiner durchgesickert.

Das Body/Raw-Verhältnis misst Reduktion, nicht Genauigkeit; ausgelassener Inhalt wurde nicht bewertet. author und sitename waren bei beiden MediaWiki-Templates null, während die lokale Fixture einen Autor lieferte – ein MediaWiki-spezifischer Fehltreffer, kein Beleg für allgemeine Byline-Zuverlässigkeit. Die Daten werden wie zurückgegeben ausgewiesen, nicht gegen Ground Truth verifiziert.

Zwei Extraktoren, dieselben HTML-Bytes, ein Scoring-Skript

System diagram: Two extractors, the same HTML bytes, one scoring script

In dieser Research-Base gibt es genau einen Vergleich auf derselben Testbasis, aufgebaut nicht vom trafilatura-Paket selbst. Das mozilla-readability-Paket baute ihn als Kontrollarm: 22 handgelabelte Fixtures, jeder Textblock als ARTICLE oder BOILERPLATE markiert, jedes Wort mit eindeutigem Sentinel-Token – ein extrahiertes Wort lässt sich exakt einem gelabelten Block zuordnen. Beide Tools erhielten identische HTML-Bytes. Readability lief unter jsdom 29.1.1 auf Node v22.22.3, trafilatura mit eigenem Parser.

Metrik (mikro-aggregiert, Content-Fidelity-Set)trafilatura 2.1.0@mozilla/readability 0.6.0Beleg
Wiederhergestellte Article Units40 von 4040 von 40comparison.json
Durchgelassene Boilerplate Units1 von 175 von 17comparison.json
Boilerplate-Tokens, die den Output verunreinigen341comparison.json
Token-Präzision0.9390.902comparison.json
Token-F10.9690.948comparison.json
Non-Prose-Recall, Fixture f6_nonprose7 von 88 von 8comparison.json
Sehr kurzer Artikel, Fixture f3_short_120, F10.5710.800comparison.json

Quelle: tools/mozilla-readability/artifacts/raw/comparison.json – 11 Fixtures im Content-Fidelity-Set, 40 Article Units, 17 Boilerplate Units. Synthetische Fixtures, bewusst auf adversariale Fälle ausgerichtet – lesen Sie sie als Mechanismus, nicht als Ranking eines echten Korpus.

Keines der beiden Tools räumt alles weg, und genau die Aufteilung ist interessant. trafilatura hält Chrome draußen – ein durchgesickerter Block gegen Readabilitys fünf, drei kontaminierende Tokens gegen 41. Das ist die Präzisionshälfte von „sauberem Artikeltext" und entscheidet, ob Ihr LLM-Context-Window mit Sidebar-Links vollläuft. Aber Readability rettet Inhalte, die trafilatura wegwirft: Bei der Non-Prose-Fixture ließ trafilatura ein <figcaption> fallen, das Readability behielt, und bei einem sehr kurzen Artikel erreichte es 0.571 gegen 0.800. Aggressive Bereinigung ist ein Trade-off, kein Gratisgewinn. Bei einem Korpus voller Stubs, Captions und Tabellenseiten arbeitet er gegen Sie.

Wie man den Vergleich in einen Auswahltest übersetzt

Legen Sie zuerst fest, welcher Fehler für Ihre Pipeline teurer ist. Frisst Seitenrahmen Downstream-Tokens oder verschmutzt Suchergebnisse, zählen Boilerplate-Leakage und kontaminierende Tokens mehr. Ist das Verlieren einer Caption, eines kurzen Posts oder eines Non-Prose-Blocks inakzeptabel, zählt Content-Recall nach Seitentyp mehr. Das gemeinsame Fixture-Set macht den Trade-off sichtbar, wählt aber nicht die Gewichtung für Ihr Nachrichtenarchiv, Ihren Dokumentationskorpus oder Ihre Retrieval-Pipeline.

Den breiteren Stresstest-Kontext liefert der Vergleich von zehn Bibliotheken bei Speicherverbrauch und fehlerhaftem HTML.

Bauen Sie den Vergleichstest aus gespeichertem HTML statt Live-URLs, damit beide Extraktoren identische Bytes erhalten. Nehmen Sie Langform-Artikel, kurze Meldungen, captionreiche Stücke, tabellen- oder codelastige Dokumente sowie Templates jedes genutzten Publishers auf. Labeln Sie vorab wenige Pflicht-Content-Einheiten und bekannte Rahmenblöcke, dann bewerten Sie leere Ausgaben, Pflichteinheiten-Recovery, unerwünschte Leakage und Metadatenfelder getrennt. Ein einzelner „Qualitäts"-Score verschleiert oft den operativ relevanten Fehlermodus.

Prüfen Sie auch den Output-Vertrag: trafilaturas JSON trägt Inhalt und Metadaten, ist aber kein typisiertes Zeilenschema. Prüfen Sie Mindest-Body-Länge und Pflichtmarker statt jede nicht-leere Ausgabe zu akzeptieren; unterscheiden Sie fehlende von falschen Metadatenwerten und bewahren Sie Quell-URL plus Extraktionsversion für Reproduzierbarkeit.

Testen Sie Fetching als eigene Schicht. Die 30-Sekunden-Beobachtung gehört zu fetch_url, nicht zur Extraktion aus vorliegendem HTML; der interne Mechanismus blieb ungeklärt. Bei wichtigen Deadlines, Retries, Auth oder Proxy-Policy: selbst kontrollierten Client nutzen, finale Response-Bytes protokollieren, diese an den Extraktor übergeben. Das trennt Akquise- von Content-Auswahl-Fehlern und macht Vergleiche wiederholbar.

Messen Sie zuletzt Deployment-Eigenschaften auf der Zielplattform. Die 17-Pakete-Installation brauchte keinen separaten Browser, sagt aber nichts über Durchsatz, Speicherwachstum, Wheel-Verfügbarkeit oder paralleles Worker-Verhalten. Der Artikel zeigt einen nützlichen Präzisions-/Recall-Mechanismus gegenüber Readability; Produktionstauglichkeit hängt weiter von Korpus- und Laufzeittests ab.

Als externer Gegencheck: trafilaturas eigene Evaluationsseite und der öffentliche ScrapingHub article-extraction-benchmark setzen es bei Word-F1 über rund 181 echte Seiten vor readability-lxml – dieselbe Richtung wie oben. Ein oft übersehener Vorbehalt: Der zitierte trafilatura-F1 (~0.945) gehört zur älteren 0.5.1-Linie, nicht zur hier getesteten 2.1.0.

Vor- und Nachteile

Vorteile:

  • Weniger gelabelte Boilerplate-Leakage als Readability: 1 von 17 Blöcken gegen 5.
  • Autor und Datum auf der lokalen Fixture korrekt, sowie title/date/hostname auf beiden echten Artikelseiten.
  • Dasselbe HTML als Text, Markdown oder JSON serialisierbar.
  • Installation mit 17 Paketen, keine separate Browser-Laufzeit.
  • Fehler bleiben ruhig: fetch_url gibt bei HTTP 500 None zurück statt eine Exception zu werfen.
  • Getestete Version entspricht der neuesten (2.1.0) – keine Versions-Drift.
  • Apache-2.0-lizenziert – permissiv und kommerziell freundlich.

Nachteile:

  • Kein strukturierter Scraper: Katalogtest lieferte 12 Namen und 12 Preise als Text, 0 typisierte Zeilen. Kein Schema, keine Felder.
  • Kein JavaScript-Rendering – nur statisches HTML; clientseitige Seiten brauchen einen separaten Renderer.
  • author und sitename kamen bei beiden MediaWiki-Seiten null zurück, Byline-Extraktion also nicht garantiert.
  • Aggressive Bereinigung hat einen Preis: ein von Readability behaltenes <figcaption> wurde entfernt, Score 0.571 gegen 0.800 bei sehr kurzem Artikel.
  • Der ruhige 500er brauchte 30,012 Sekunden für None; bei Deadline-Kontrolle einen selbst kontrollierten Fetcher nutzen.
  • Eingebauter Crawl-/Sitemap-Spider und CSV-/XML-Ausgabe wurden nicht getestet, dazu keine Aussage.

Für wen es gedacht ist — und wer es besser lässt

trafilatura zielt auf artikelorientierte Hauptinhalt-Extraktion: Textkorpora, lesbare Archive oder NLP-Inputs aus statischem HTML, wenn heuristische Bereinigung akzeptabel ist. Der Fixture-Vergleich stützt geringere Boilerplate-Leakage als bei Readability, während Readability bei kurzen und Non-Prose-Fällen mehr behielt.

Lassen Sie es links liegen, wenn Sie strukturierte Extraktion brauchen – bepreiste Produktzeilen, typisierte Datensätze, key: value-Felder –, denn es liefert Text, keine Tabellen (Katalogtest: alle 12 Namen und Preise, aber 0 Zeilen). Ebenso, wenn Ihre Ziele im Browser rendern und Sie keinen separaten Renderer anschrauben wollen – trafilatura liest nur statisches HTML. Und zweimal überlegen bei Korpora aus kurzen Stubs, Bildunterschriften und Tabellenseiten: Genau dort schneidet die Bereinigung in echten Inhalt (0.571 F1 beim sehr kurzen Artikel, ein entferntes <figcaption>). Werkzeug zur Aufgabe passen: voller Artikeltext ja, strukturiertes JSON, JS-Seiten oder 100-Wörter-Stubs woanders suchen.

Alternativen, einschließlich der Einordnung von Thunderbit

trafilatura ist eine self-hosted Apache-2.0-Bibliothek ohne Anbieter-Gebühr pro Aufruf; Rechenleistung, Bandbreite, Fetching, Monitoring und Wartung bleiben Betreiberkosten. Es übernimmt artikelorientierte Extraktion aus bereitgestelltem HTML, aber keine Browser-Ausführung und keine benutzerdefinierten Zeilenschemas.

Für dieselben Fixtures über alle sechs Extraktoren siehe den Sechs-Bibliotheken-Extraktionsvergleich.

Ein Managed Service kann Akquise, Rendering und Schema-Formung hinter eine Anbietergrenze legen. Wir bauen Thunderbit, haben es aber nicht gegen diese Fixtures getestet – dieser Artikel stützt keinen Vergleich bei Qualität, Rendering, Latenz, Anti-Bot oder Kosten. Die Entscheidung: self-hosted HTML-zu-Content-Kontrolle gegen eine gehostete Akquise- und Strukturextraktions-Grenze.

Verwandt: der vollständige Open-Source-Scraper-Vergleich, Crawl4AIs browserbasiertes Markdown-Review, Firecrawls self-hosted Markdown-Review.

Thunderbit für Web-Datenextraktion ausprobieren

Fazit

Ziehen Sie trafilatura in Betracht, wenn die Aufgabe artikelorientierte Extraktion aus statischem HTML ist und Priorität das Zurückweisen gelabelter Boilerplate hat. Auf den gemeinsamen Fixtures ließ es eine annotierte Boilerplate-Einheit durchsickern, Readability fünf. Der Vorteil kam mit geringerer Vollständigkeit bei sehr kurzen und Non-Prose-Fixtures – die Korpusform sollte die Wahl entscheiden.

Es führt kein JavaScript aus und erzeugt keine benutzerdefinierten, wiederholten Zeilen. Auf den beiden MediaWiki-Seiten waren author und sitename null – eine template-spezifische Beobachtung. Readability behielt die Caption, die trafilatura fallen ließ, und erzielte bei der Fixture f3_short_120 einen höheren Score; die Evidenz stützt „niedrigerer F1 bei der sehr kurzen Fixture", nicht eine Zeichenzahl oder eine unbrauchbare Ausgabe.

Thunderbit für Web-Datenextraktion ausprobieren Get Started Free

FAQs

Welche Struktur gibt trafilatura zurück? Es kann extrahierten Inhalt und Metadaten als JSON, Markdown, Text, HTML, XML oder CSV serialisieren. Das ist strukturierte Serialisierung, aber kein benutzerdefiniertes Zeilenschema wie Produktname, Preis und Bewertung. Die Katalog-Fixture lieferte Werte als reinen Inhalt, nicht als typisierte Zeilen.

Kann trafilatura einen Produktkatalog in strukturierte Zeilen scrapen? Nein. Es ist ein Content-Extractor, kein strukturierter Scraper. Bei einer Katalog-Fixture lieferte es alle 12 Produktnamen als reinen Text und 0 strukturierte Zeilen – die Namen stecken in der Ausgabe, sind aber keine Felder. Für typisierte Datensätze wie Name/Preis/Bewertung: selektorbasierter Parser oder schemagetriebene Extraktions-API.

Rendert trafilatura JavaScript? Nein. Nur statisches HTML. Bei einer clientseitig gerenderten Seite bekommen Sie, was der Server vor der JS-Ausführung sendet – oft nicht der gewünschte Inhalt. Kombinieren Sie es mit einem separaten Renderer bei JS-lastigen Zielen.

Ist trafilatura schwer zu installieren? In der getesteten Python-3.14-virtualenv installierte es 17 Pakete, keine separate Browser-Laufzeit nötig. Das größte Wheel war lxml mit 8,6 MB. Separat brauchte ein lokaler 500er-Aufruf 30,012 Sekunden für None; bei verifizierter Deadline einen selbst kontrollierten HTTP-Client nutzen.

Ist trafilatura für kommerzielle Nutzung kostenlos? Ja, Apache-2.0-lizenziert, also permissiv und kommerziell freundlich. Prüfen Sie wie immer die aktuelle Lizenz im Repo, bevor Sie darauf aufbauen.

Ke
Ke
CTO bei Thunderbit | Senior Data Scientist & ML-Experte Mit fast zehn Jahren Erfahrung in Machine Learning und Data Science ist Ke Shen Absolvent der Columbia University und ehemaliger Senior Data Scientist bei Walmart Labs. Mit tiefgreifender, von Fachkollegen anerkannter Expertise in Python, R, Java und Statistik teilt er praxiserprobte Einblicke dazu, wie sich komplexe KI-Algorithmen von der Theorie in eine produktionsreife Architektur überführen lassen.
Inhaltsverzeichnis
Thunderbit · KI-Web-Daten-Agent

Daten von jeder Seite in 1 Klick extrahieren

Vertraut von über 250.000 Nutzern
kostenloser Plan verfügbar
Von der Webseite zur Tabelle
Beschreibe einfach, was du brauchst — Thunderbits KI-Agent erfasst es und exportiert es nach Excel, Google Sheets, Airtable oder Notion. Kostenlos loslegen.
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week