Extraktor článků, který neotvírá prohlížeč — a přesto mi vyčistil testovací stránky

Poslední aktualizace July 17, 2026
Extraktor článků, který neotvírá prohlížeč — a přesto mi vyčistil testovací stránky
Shrnutí od AI
Tato recenze trafilatury popisuje knihovnu jako úzce zaměřený extraktor obsahu článků, nikoli jako prohlížeč, crawler nebo strukturovaný scraper. Ověřuje, jak dobře trafilatura odstraňuje boilerplate ze statického HTML a současně zachovává název, autora, datum a odstavce těla textu. Recenze také pokrývá výstup do více formátů, lehké nastavení, rychlost, hranice selhání a vysvětluje, proč se nástroj nehodí pro produktové katalogy nebo libovolnou extrakci polí. Je to užitečný benchmark pro týmy, které potřebují čistý text článků pro vyhledávání, analýzu nebo LLM pipeline bez instalace headless browseru či psaní selektorů pro každý web.

Většina scrapingových nástrojů, které letos poutají pozornost, chce ovládat prohlížeč. trafilatura ne. Je to čistě Python knihovna, která čte statické HTML, určuje, které bloky jsou skutečný článek, a zbytek zahodí. Právě tenhle úzce vymezený úkol — extrakce hlavního obsahu — je celé její poslání, a dělá ho už dávno předtím, než se začalo mluvit o „markdownu připraveném pro LLM“.

Verzi 2.1.0 jsem otestoval na pevně dané sadě fixture v Pythonu 3.14 a právě článek byl ten případ, který mi utkvěl v hlavě. Do běžné stránky jsem zabalil skutečný text a přidal kolem něj obvyklý balast — výzvu k přihlášení, otravné „Subscribe“, navigační odkazy a copyright patičku — a trafilatura mi vrátila název, všechny tři odstavce těla, autora i datum, přičemž všechny tyto boilerplate prvky zmizely. Žádný prohlížeč, žádná pravidla pro konkrétní web, jedno volání funkce. Háček, a jeden tu je, se ukáže ve chvíli, kdy po ní chcete něco strukturovaného. K tomu se vrátím níže (je to hranice návrhu, ne chyba).

Co trafilatura je a jaký předpoklad stojí za to opustit

Oficiální krátký popis říká, že jde o „Python & command-line tool to gather text and metadata on the Web: crawling, scraping, extraction,“ s výstupy do CSV, JSON, HTML, Markdown, TXT nebo XML. To je široký záběr, ale trochu to podceňuje to, co nástroj skutečně odlišuje. Hodnota není v pomocnících pro crawling ani v šesti formátech výstupu. Je v exktrakci obsahu: vstupem je HTML dokument, výstupem hlavní text článku, zbavený stránky a okolního šumu.

Aby bylo jasno, tady je mentální model, protože vysvětluje silné stránky i hranice jedním tahem. Většina scraperů, které namíříte na stránku, je řízená selektory. Zadáte jim „vezmi element s třídou product-price“ a oni vrátí obsah z daného místa. trafilatura funguje obráceně. Přečte celý dokument a rozhodne, které bloky jsou článek a které jsou jen boilerplate, a to pomocí heuristik nad obsahem, ne pomocí vámi ručně napsaného selektoru. Proto nepotřebuje žádnou konfiguraci pro konkrétní web, aby dokázala vyčistit stránku, kterou nikdy předtím neviděla. A přesně proto neumí vracet strukturovaný katalog: nemá schéma, mapu polí, jen úsudek o tom, co se počítá jako obsah. Je to extraktor, ne parser, kterému přesně ukazujete, kam sáhnout.

Je také opravdu lehká. Čistý Python, žádný headless browser, žádný chromium binary schovaný v cache, žádná instalace Playwrightu, která na vás vyběhne při prvním spuštění. Tahle vlastnost zní malicherně, dokud nespouštíte extrakci nad tisíci URL a každý megabajt závislostí i každý podproces je něco, co musíte provozovat. K 2026-07-09 je to zhruba projekt s 6,26 tisíci hvězdičkami (adbar/trafilatura) — výrazně menší repo než frameworky pro browser a crawling, se kterými se obvykle srovnává, což vypovídá o jeho rozsahu, ne o kvalitě.

Nastavení je krátká kapitola — a to je samo o sobě recenze

Instalace je na jeden řádek a není u ní na co upozorňovat, což je vlastně něco, co stojí za zmínku. pip install trafilatura v čistém virtualenvu na Pythonu 3.14 stáhlo jednu čistou sadu balíčků — žádný browser ke stažení, žádný post-install krok, žádná transitive dependency zeď, přes kterou byste se museli prokousávat. Už jsem těchto knihoven recenzoval dost na to, abych čekal druhou botu: 150MB balík prohlížeče, který objevíte až při prvním spuštění, nativní rozšíření, které se nesestaví, nebo další skupinu [fetchers], o které nikdo nemluvil. U trafilatura ta druhá bota nespadla.

Verze, kterou mi pip nainstaloval (2.1.0), odpovídá aktuálnímu vydání z 2026-06-07, takže u žádného z níže uvedených čísel není hvězdička typu „testovali jste zastaralou verzi“. V téhle kategorii to nebývá samozřejmost — spousta těžších nástrojů, které jsem zkoušel, byla v době testu už o hlavní verzi pozadu. Tady je testovaná i vydaná verze stejná.

Prakticky: co extraktor skutečně vrátil

trafilatura jsem testoval na fixture, které měly prověřit jak její silnou stránku, tak i hranice. Rozhodující byl případ s článkem.

trafilatura boilerplate cleanup

Vzals jsem lokální článek a skutečný obsah jsem schoval do šumu — přihlašovací výzva, CTA „Subscribe“, navigační odkazy a copyright patička, přesně ten druh balastu, který naivní scraper stáhne spolu s textem. trafilatura vrátila název a všechny tři ze tří odstavců těla, a každý jediný boilerplate marker — Login, Subscribe, Copyright — vypadl z výstupu. Vedle textu správně vytáhla i autora a datum z metadat stránky. Výsledek vyšel z jednoho volání jako .txt, .md i .json.

trafilatura title and 3/3 paragraphs retained

Ten vícero formátový výsledek si zaslouží pauzu. Jedna extrakce skončila jako prostý text, Markdown i JSON. Cesta přes Markdown je přesně ten krok k „LLM-ready textu“, o který se dnes všichni snaží: pošlete dovnitř chaotickou stránku, dostanete čistý text se zachovanou strukturou a můžete ho předat modelu. trafilatura to dělá bez prohlížeče v celé smyčce, což je tišší cesta ke stejnému výsledku, než jakou volí nástroje stavící celý rendering stack.

Pak přišla veřejná kontrola. Namířil jsem ji na živou produktovou stránku — produktovou stránku z Books to Scrape — a vrátila 1 324 znaků čistého textu plus Markdown: popisný blok, čitelný, bez okolního page chrome. A když jsem jí předložil stránku, která odpověděla HTTP 500, fetch_url vrátilo None místo vyhození výjimky. Žádný pád, žádný stack trace, který by bylo třeba chytat. Právě tohle nudné, ale správné chování při chybě chcete u nástroje, který poběží bez dozoru podle plánu.

Výhrady

Jsou tři a každá z nich přesně vymezuje, kde ten nástroj dává smysl.

trafilatura catalog text-only boundary

První a největší: trafilatura je extraktor obsahu, ne strukturovaný scraper. Spustil jsem ji na fixture s katalogem 12 produktů. Vrátila všech 12 názvů produktů — jako text — a přesně 0 strukturovaných řádků (478 znaků plochého textu). Názvy i ceny ve výstupu jsou, jen nejsou jako pole. Pokud potřebujete [{name, price, rating}, …], tohle není správný nástroj a žádný konfigurační přepínač to nezmění. Je to rozhodnutí o tom, k čemu nástroj slouží, ne bug k nahlášení.

trafilatura no JavaScript render boundary

Druhá věc: nerenderuje JavaScript. Pracuje se statickým HTML. Když ho pošlete na stránku renderovanou na klientovi, dostanete to, co server poslal před spuštěním JS, což často není nic užitečného. Pokud jsou vaše cíle JS-heavy, připojte k tomu renderer — trafilatura za vás tuhle polovinu neudělá, a ani netvrdí, že umí.

Třetí výhrada se týká mých vlastních důkazů. Veřejný test extrakce výše se opíral o blok s popisem produktu, ne o skutečný zpravodajský článek, protože veřejný sandbox, který jsem použil (rodina toscrape), obsahuje jen katalogy bez news stránek. Čistý výsledek čištění článku pochází z kontrolované lokální fixture. Ten výsledek považuji za důvěryhodný — odstranění boilerplate je jednoznačné a reprodukovatelné — ale produktová stránka sama o sobě není důkazem extrakce na úrovni redakčního článku, takže ji za takový důkaz nevydávám.

Abych tu mezeru částečně uzavřel, udělal jsem samostatnou, záměrně nehodnocenou ukázku na dvou reálných článkových stránkách, načtených ze souborů, aby byl běh deterministický. Na článku „Web scraping“ z Wikipedie trafilatura stáhla tělo z 230 049 bajtů surového HTML na 26 673 bajtů extrahovaného obsahu (poměr tělo/raw 0,116) a všechny čtyři sledované značky okolního rozhraní — „Jump to content,“ „Privacy policy,“ „Powered by MediaWiki,“ „This page was last edited“ — zmizely. Na archivovaném článku z Wikinews to šlo z 79 716 bajtů na 2 200 (poměr 0,028) a všech pět sledovaných markerů bylo pryč. Název, datum i hostname se na obou stránkách vyplnily správně; autor a sitename na obou vrátily null, a tyto neúspěchy uvádím otevřeně. Dvě věci je potřeba držet od sebe: ten bajtový poměr ukazuje, kolik markup a chrome bylo odstraněno, ne přesnost extrakce, a obě stránky jsou z rodiny MediaWiki, takže jde o ukázku na reálných článcích, ne o reprezentativní korpus.

K přesnosti samotné odkazuji raději na externí důkazy, než abych předstíral, že jsem ji změřil já. trafilatura sama zveřejňuje svou evaluation page a v ScrapingHub article-extraction benchmarku uvádí nejlepší open-source F1 (kolem 0,945) proti srovnávacím nástrojům jako readability-lxml (~0,887). Dvě poctivá upřesnění k tomu číslu: pochází z toho benchmarku, ne z mých testů, a uváděná hodnota ~0,945 je navázaná na starší větev 0.5.1 ve zdroji, ne na 2.1.0, kterou jsem testoval. Berte to jako externí benchmarkový důkaz, proč má nástroj dobrou pověst v extrakci, ne jako měření z této recenze.

Klady a zápory

Klady:

  • Nejčistší extrakce článků v mé sadě — název plus všechny 3 ze 3 odstavců, a každý boilerplate marker (Login/Subscribe/Copyright) odstraněn.
  • Správně vytahuje metadata autora i data spolu s textem.
  • Více formátů z jednoho volání: txt, Markdown a JSON — Markdown je skutečný krok k textu připravenému pro LLM.
  • Lehká instalace v čistém Pythonu — žádný browser, žádné stahování binárky, žádná závislostní zeď.
  • Elegantní chování při chybě: fetch_url při HTTP 500 vrací None místo výjimky.
  • Testovaná verze odpovídá aktuálnímu vydání (2.1.0) — žádný drift verzí.
  • Licence Apache-2.0 — permissive a přívětivá pro komerční použití.

Zápory:

  • Není to strukturovaný scraper: test katalogu vrátil 12 názvů jako text a 0 typizovaných řádků. Žádné schéma, žádná pole.
  • Bez JavaScript renderování — pouze statické HTML; pro klientem renderované stránky je potřeba samostatný renderer.
  • Metadata jsou na některých webech neúplná: autor a sitename se na obou reálných článkových fixture vrátily jako null.
  • Můj veřejný textový test používal blok s popisem produktu, ne skutečný news článek.
  • Vestavěný crawler/sitemap spider a výstupy CSV/XML jsem v tomto běhu netestoval, takže o nich netvrdím nic.

Pro koho je a kdo by měl sáhnout jinam

trafilatura míří přesně na člověka, jehož problém zní: „Mám URL a chci z nich čistý text článku, bez navigace, cookie lišty a newsletterového otravování.“ Sestavování textového korpusu, posílání stránek do modelu, archivace čitelného obsahu, NLP nad webovými články — to je její parketa, a v ní je velmi dobrá. Pokud chcete lehký krok bez prohlížeče, který změní chaotické HTML na čistý Markdown nebo JSON, nainstalujte ji a pokračujte v práci.

Sáhněte po něčem jiném, pokud ve skutečnosti potřebujete strukturovanou extrakci: řádky produktů s cenou, typizované záznamy, pole key: value. Dostanete text, ne tabulky — katalogový test vrátil názvy, ale ne řádky, a to se nezmění. Stejně tak ji vynechte, pokud vaše cílové stránky renderují obsah v prohlížeči a nechcete k tomu přidávat samostatný renderer, protože trafilatura čte statické HTML a tam končí. Selhání není dramatické; prostě dostanete prázdný nebo tenký výsledek a budete přemýšlet proč. Nástroj přizpůsobte úloze — text článků ano; strukturované JSON nebo JS renderované stránky hledejte jinde.

Alternativy, včetně toho, kam zapadá Thunderbit

Vyzkoušejte Thunderbit pro extrakci webových dat

Nejdřív férové vymezení. trafilatura je bezplatná, Apache-2.0, self-hosted knihovna, kterou provozujete sami. Máte kód pod kontrolou, nestojí nic za stránku a je dost lehká na to, aby zapadla do jakéhokoli pipeline bez provozní zátěže. Pro konkrétní úkol zredukovat článek na čistý text je to kombinace, kterou je těžké překonat, a placená služba na tom nic nemění.

Srovnání začíná být zajímavé na hranici, kterou trafilatura záměrně vymezuje: strukturovaná data a JavaScript. To jsou dvě věci, které nedělá, a zároveň přesně ty dvě věci, které je navržené managed extraction API stavěné zvládnout. Právě tam sedí vývojářský stack Thunderbit — na druhé straně té hranice, jako doplněk k trafilatuře, ne jako konkurent pro statické HTML články. Endpoint /distill dělá stejný typ práce jako trafilatura, tedy stránku převede na čistý Markdown připravený pro LLM, ale s renderováním JavaScriptu na serveru, což je přesně ta půlka, kterou trafilatura přeskakuje. A /extract vrací strukturované JSON podle schématu, které si definujete vy, což je ta půlka, kterou trafilatura z principu odmítá: katalog, který se vrátil jako 478 znaků plochého textu, je případ, kdy byste sáhli po /extract. Pro AI agenty a coding asistenty je k dispozici MCP server, jehož nástroj pro návrh polí lze zkusit zdarma, a také CLI přes npx @thunderbit/thunderbit-cli pro terminál, CI a cron úlohy. Běží na stejném enginu jako Thunderbit Chrome Extension, kterou používá přes 100 000 lidí, takže existuje i ne-technická cesta, ale pro toto publikum jsou důležité API, MCP a CLI.

Skutečný trade-off tedy nikdy nebyl v kvalitě extrakce textu — v tom trafilatura na stránkách, pro které je stavěná, vyhrává, a říkám to otevřeně. Jde o rozsah a o to, kdo provozuje prohlížeč. Potřebujete čistý text článku ze statického HTML, self-hosted, s nulovou cenou za volání? trafilatura je lehčí a ostřejší nástroj, bez debat. Potřebujete strukturované JSON podle schématu, nebo se stránka vykreslí až po spuštění JavaScriptu? Tam patří spravovaný stack a to není souboj, který trafilatura chce svádět. Ceník pro managed stranu najdete na stránce cen Thunderbit, pokud porovnáváte cenu za stránku s náklady na vlastní provoz rendereru.

Pokud zvažujete možnosti napříč celou kategorií, průběžně udržuji srovnání web scraping nástrojů, které skutečně používám, kde dávám takovéto knihovny vedle browser-driven a managed alternativ.

Verdikt

Měli byste trafilaturu používat? Ano — pokud je vaším úkolem převést chaotické HTML na čistý text článku a zároveň přesně víte, co záměrně neumí. Z jediné lehké instalace bez prohlížeče vyčistila stránku od všech boilerplate markerů a vrátila název, všechny tři odstavce těla, autora i datum. Umí společně generovat txt, Markdown i JSON, takže jde o legitimní krok k textu připravenému pro LLM. V oboru, který je přesvědčený, že bez headless browseru a AI crawleru se nic nedá udělat, je nástroj, který neotevře ani jeden prohlížeč, ten, který mi skutečně vyčistil to, na čem mi záleží.

Jen ho správně zařaďte. Je to extraktor, ne strukturovaný scraper — katalog se vrátil jako 12 textových názvů a 0 řádků. Čte statické HTML a nespouští JavaScript. Extrakce metadat je na některých stránkách silná a na jiných jen částečná (autor a sitename se na obou reálných článkových fixture, které jsem kontroloval, vrátily jako null). A můj veřejný textový test stál na bloku s popisem produktu, ne na skutečném news článku, takže tvrzení o newsroom-grade výsledku berte jako slibné, ne definitivně uzavřené. V rámci těchto hranic dělá trafilatura svůj jeden úkol čistěji než těžší nástroje, které jsem proti ní srovnával — a dělá ho s minimem nainstalovaných věcí.

Vyzkoušejte Thunderbit pro extrakci webových dat Get Started Free

Často kladené otázky

Co trafilatura z webové stránky vlastně extrahuje? Hlavní obsah — tělo článku, název a metadata jako autor a datum — přičemž odstraní boilerplate. V mém testu vrátila název a všechny 3 ze 3 odstavců z stránky obalené navigací, loginem, subscribe výzvou a copyright šumem, a každý z těchto markerů ve výstupu chyběl. Určuje, co je obsah, pomocí heuristik, takže k vyčištění dosud neviděné stránky nepotřebuje selektory pro konkrétní web.

Umí trafilatura převést produktový katalog na strukturované řádky? Ne. Je to extraktor obsahu, ne strukturovaný scraper. Na fixture s 12 produkty vrátila všech 12 názvů produktů jako plochý text (478 znaků) a 0 strukturovaných řádků — názvy jsou ve výstupu, ale nejsou z nich pole. Pokud potřebujete typizované záznamy jako name/price/rating, použijte parser založený na selektorech nebo API pro extrakci podle schématu.

Umí trafilatura renderovat JavaScript? Ne. Pracuje pouze se statickým HTML. Když ji pošlete na stránku renderovanou na klientovi, dostanete to, co server poslal před spuštěním JavaScriptu, což často není obsah, který hledáte. Pokud jsou vaše cíle JS-heavy, spojte ji se samostatným rendererem; trafilatura čte statický dokument a tam končí.

Je trafilatura náročná na instalaci? Ne — to je jedna z jejích skutečných výhod. pip install trafilatura stáhlo v čistém virtualenvu na Pythonu 3.14 jednu čistou balíčkovou stromovou strukturu, bez downloadu browseru, bez post-install kroku a bez skrytých extra skupin. Verze, kterou pip nainstaloval (2.1.0), odpovídá aktuálnímu vydání z 2026-06-07.

Jak přesná je trafilatura ve srovnání s jinými extraktory? V téhle recenzi jsem přesnost nebenchmarkoval, takže odkazuji na externí důkazy. trafilatura má vlastní evaluation page a v ScrapingHub article-extraction benchmarku uvádí nejlepší open-source F1 (kolem 0,945) proti srovnávaným nástrojům jako readability-lxml (~0,887). Uvědomte si, že tahle hodnota pochází z daného benchmarku na starší větvi 0.5.1, ne z verze 2.1.0, kterou jsem testoval — berte ji tedy jako externí důkaz reputace nástroje, ne jako měření z tohoto článku.

Ke
Ke
CTO ve Thunderbit | Senior Data Scientist a expert na ML S téměř desetiletou zkušeností v oblasti strojového učení a datové vědy je Ke Shen absolventem Kolumbijské univerzity a bývalým Senior Data Scientist ve Walmart Labs. Díky hlubokým odborným znalostem v Pythonu, R, Javě a statistice, uznávaným i mezi kolegy, sdílí ověřené poznatky o tom, jak převést složité AI algoritmy od teorie až k produkční architektuře.

Vyzkoušej Thunderbit

Získej leady i další data jen na 2 kliknutí. Pohání AI.

Získat Thunderbit Je to zdarma
Vytěž data pomocí AI
Snadno přenes data do Google Sheets, Airtable nebo Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week