Nasadil jsem 9 open-source scraperů do jednoho testovacího prostředí a ukázalo se, že správná volba je spíš otázka než odpověď

Poslední aktualizace July 17, 2026
Nasadil jsem 9 open-source scraperů do jednoho testovacího prostředí a ukázalo se, že správná volba je spíš otázka než odpověď
Shrnutí od AI
Tento přehled staví devět open-source nástrojů pro scraping na jednu společnou testovací sadu místo toho, aby je porovnával na nesouvisejících testech. Srovnává Crawl4AI, Firecrawl, trafilatura, Crawlee, Playwright, Puppeteer, Scrapy, Colly a Scrapling napříč statickými stránkami, stránkami vykreslenými v JavaScriptu, extrakcí článků, HTTP chybami, crawl grafy, náročností nastavení, formátem výstupu i licencemi. Článek tvrdí, že neexistuje jediný nejlepší scraper: správná volba závisí na tom, zda potřebujete text připravený pro LLM, vykreslování v browseru, HTTP crawling nebo adaptivní obnovu selektorů. Zároveň odkazuje na jednotlivé podrobné recenze každého nástroje.

Téměř každé shrnutí typu „nejlepší open-source scraper“ má jednu tichou slabinu: nikdo netestuje nástroje na stejných stránkách. Scrapy se zkouší na zpravodajském článku, Playwright na nějaké e-commerce ukázce, Colly na čemkoli, co měl autor zrovna po ruce — a pak se všechny porovnají vedle sebe, jako by ta čísla vůbec znamenala totéž. Takové pořadí vám ale říká spíš něco o stránkách než o nástrojích.

Proto jsem udělal tu nudnou, ale správnou věc, kterou podobné seznamy obvykle vynechávají. Připravil jsem jednu sadu testovacích fixture a pustil přes ni všech devět nástrojů: statický katalog, katalog vykreslený pomocí JavaScriptu, článek schovaný za navigací a patičkou, záměrně rozbitý HTTP 500, malý graf interních odkazů a dvě veřejné tréninkové weby. Stejný zdroj pravdy, stejné metriky, každý jediný běh. Skripty i surové výsledky jsou v jednom veřejném benchmark repozitáři, takže si cokoli můžete znovu ověřit sami. Výsledek není ten hezky seřazený žebříček, který podobné přehledy slibují — žádný jediný vítěz neexistuje. Jsou tu tři různé úkoly a devět nástrojů se do nich rozděluje víceméně samo.

Vyzkoušet Thunderbit pro extrakci webových dat

Jak benchmark fungoval a jedno omezení, které říkám otevřeně

Srovnání dimenzí benchmarku

Každý nástroj dostal stejné typy fixture: 12 statických produktů rozložených přes dvě stránky, 8 produktů vložených přes JavaScript po prodlevě, článek obalený navigací a patičkovým balastem kolem tří skutečných odstavců, záměrný serverový 500 a graf interních odkazů. Právě tohle uspořádání dává výsledkům smysl — „8/8 dynamických produktů“ znamená úplně to samé, ať už to vygeneroval Puppeteer nebo Crawlee.

A tady je hranice, kterou většina přehledů přeskakuje. Balíček každého nástroje je zrcadlovou kopií těchto fixture, takže absolutní počty znaků nejsou napříč nástroji striktně srovnatelné — berte je jako signál uvnitř jednoho nástroje, nikdy ne jako univerzální skóre. Srovnatelné jsou metriky jako recall (chápejte jako míru úspěšnosti), průchod JavaScriptem a strukturální chování. Jedna důležitá poznámka ve stejném duchu: test Crawl4AI pro statický katalog pokrýval jen první stránku, takže jeho 6/6 je plný recall na užším výřezu, zatímco ostatní nástroje procházejí obě stránky a mají 12/12 — menší rozsah, ne částečný výpadek. Všechny detaily, fixture po fixture, jsou v popisu metodiky.

Ještě jedna poznámka před čísly. Každý balíček má i orientační výzkumné skóre, ale záměrně je nezobrazuji jako pořadí v tabulce. Sloužily jen jako interní kontrola, zda nástroj odpovídá vlastním důkazům, ne jako liga. Zveřejnit je v jedné řadě by jen znovu vyrobilo přesně ten problém falešné přesnosti, kterému se celé tohle cvičení snaží vyhnout. Tohle je syntéza toho, co benchmark ukázal, ne výsledková listina.

Celé pole na jednom testovacím stole

Stačí se podívat na dva sloupce v tabulce — „Renders JS?“ a „Built-in crawl queue“ — a tři úkoly jsou v podstatě hned jasné.

NástrojJazykRenderuje JS?Statický recallStrukturovaný výstupVestavěná crawl frontaNáročnost nastaveníLicence
Crawl4AIPythonAno (browser)6/6 (1. stránka)CSS schémaVestavěné BFS/DFSVysoká (2 browser stacky)Apache-2.0
FirecrawlSelf-hostedAno (playwright-service)Kompletní MarkdownAno/v1/crawlNejvyšší (6 kontejnerů)AGPL-3.0
trafilaturaPythonNe3/3 článekNe (pouze text)NeNízkáApache-2.0
CrawleeNode/TSVolitelné podle enginu12/12Přes extrakciAno (RequestQueue)Střední (+~80 MiB)Apache-2.0
PlaywrightNode/multiAno12/12RučněNe (ručně psané BFS)Střední (browser)Apache-2.0
PuppeteerNodeAno (Chrome)12/12RučněNe (ručně psané BFS)Střední (Chrome)Apache-2.0
ScrapyPythonNe12/12Feed export (JSON/CSV/XML)Ano (vestavěné)Střední (závislosti Twisted)BSD-3
CollyGoNe12/12Přes callbackyOvládání hloubkyNízká (1 binárka + Go)Apache-2.0
ScraplingPythonNe (HTTP fetcher)12/12AnoNeStřední ([fetchers])BSD-3

Tři rodiny open-source scraperů

Poznámka k metadatům v tabulce i dál v textu: počty hvězdiček a verze byly zachycené na začátku července 2026 a obojí se rychle mění. Než je budete považovat za aktuální, ověřte je znovu na GitHubu a na stránkách jednotlivých balíčků.

Index jednotlivých recenzí nástrojů

Každý projekt v tomhle přehledu má svoji podrobnou samostatnou recenzi:

Tady jsou jejich obálky — plus dva skutečné screenshoty z testu JavaScript renderování, aby tvrzení „8/8 dynamických“ nebylo jen číslo na stránce.

Obálka recenze Crawl4AI

Obálka recenze Firecrawl

Obálka recenze trafilatura

Obálka recenze Playwright vs Puppeteer

Screenshot dynamické fixture z Playwright

Screenshot dynamické fixture z Puppeteer

Obálka recenze Crawlee

Obálka recenze Scrapy

Obálka recenze Colly

Obálka recenze Scrapling

Úkol jedna: převést stránku na text připravený pro LLM

LLM-ready vs browser vs HTTP workbenches

Pokud chcete čistý Markdown pro RAG pipeline, soutěží tu tři nástroje — a každý z nich je úplně jinak postavený.

Crawl4AI je pod marketingem browserový generátor Markdownu. Stojí za to zabít příběh o „adaptive intelligence self-learning selector“, který se kolem něj objevuje ve výsledcích vyhledávání: nic takového nemá — to je trik jiné knihovny (víc o tom až u Scrapling). To, co skutečně dělá, dělá dobře. Na tréninkovém webu Books to Scrape vyprodukoval 13 476 znaků Markdownu, zvládá extrakci přes CSS schéma pro strukturované výstupy a jeho vestavěný BFS deep crawl prošel na crawl-graph fixture 5 stránek, přitom vykreslil JavaScriptovou stránku a pořídil screenshot. Dvě slabiny tu ale jsou. Syrový Markdown obsahuje boilerplate stránky, pokud nezapnete filtr obsahu, a záměrný 500 skončil jako success=false — ne proto, že by Crawl4AI čistě zachytil HTTP chybu, ale proto, že jeho vlastní heuristika obsahu se podívala na malé chybové tělo a označila ho jako minimal_text ... blocked. A instalace vám na disk přidá dva browser stacky. Verze 0.9.0, Apache-2.0, na začátku července zhruba 71 tisíc hvězdiček.

Firecrawl je těžká váha a self-hosting opravdu funguje — říkám „opravdu“, protože šestikontejnerový stack (api, playwright-service, redis, rabbitmq, nuq-postgres a foundationdb) skutečně naběhl a ze stejné stránky Books to Scrape vrátil 9 222 znaků LLM-ready Markdownu. JavaScriptovou stránku vykreslil přes přibalený playwright-service a Einsteinův citát po scriptu se v outputu opravdu objevil, takže bylo jasné, že render proběhl skutečně. Dva zádrhele, na které jsem narazil, nebyly vina Firecrawl, ale prostředí, a chci to říct přesně, aby si nikdo nekopíroval špatné řešení: build ze zdrojů narazil na chybu snapshotteru containerd pod colimou (přešel jsem na předpřipravené image) a rozsah DNS 198.18.x.x v colimě spustil SSRF ochranu Firecrawl, kterou jsem vyřešil pomocí ALLOW_LOCAL_WEBHOOKS=true — jde o obezličku pro lokální vývoj, ne o něco, co byste měli vypínat v produkci. Self-hosted jádru také chybí Fire-engine, cloudová anti-block vrstva, a cloudové API jsem netestoval. Větší červený vykřičník je licence: self-hosted core Firecrawl je AGPL-3.0, takže před komerčním použitím to není poznámka pod čarou, ale reálný právní úkol. Na začátku července asi 148 tisíc hvězdiček.

trafilatura je v téhle skupině trochu „kontrarián“ a zároveň nástroj, na který AI-hype seznamy pořád zapomínají. Žádný browser. Žádné strukturované řádky. Jen rychlý, čistý článek v čistém Pythonu. Na testovacím článku vytáhla titul i všechny 3 ze 3 skutečných odstavců, úplně odstranila boilerplate — neprosáklo ani „Login“, ani „Subscribe“, ani „Copyright“ — a navrch získala autora i datum. Na veřejné produktové stránce vrátila 1 324 znaků čistého textu. Její limit přesně odpovídá tomu, jak je navržená: když ji pošlete na katalog, vrátí 12 názvů produktů jako text, ale 0 strukturovaných řádků — text tam je, struktura ne, a JavaScript vůbec nespouští. Verze 2.1.0 (aktuální release), Apache-2.0, asi 6,2 tisíce hvězdiček. Pro čistou extrakci článků je to první nástroj, po kterém bych sáhl.

Ta dvě čísla u Markdownu — 13 476 z Crawl4AI a 9 222 z Firecrawl — pocházejí ze stejné veřejné stránky, ale nečtěte je jako rozdíl v kvalitě. Odrážejí rozdílné strategie práce s Markdownem (kolik „webového balastu“ si každý nechává), ne verdikt o tom, který výstup je lepší. To je přesně ten princip „uvnitř nástroje“ z dřívějška, tentokrát viditelný v praxi.

Úkol dva: spolehlivě vykreslit JavaScript

Rozhodování o JavaScript renderování

Některá data prostě v HTML nejsou, dokud se nespustí skripty. A v tu chvíli už je skutečný browser nutnost, ne volba. Tento úkol pokrývají tři nástroje — a z nich dva se ukázaly být skoro ten samý nástroj.

Playwright a Puppeteer dopadly ve všech testech prakticky stejně. Oba vyrenderovaly 8/8 dynamických produktů na lokální fixture a 10 na veřejném JS webu Quotes, oba dosáhly 12/12 u statického recallu a oba si poradili s 500 korektně (Puppeteer vrací response objekt místo toho, aby házel výjimku). Ani jeden neobsahuje crawl frontu, takže oba potřebovaly ručně napsané BFS pro procházení 12stránkového grafu odkazů. Jediný skutečný rozdíl je v dosahu: Playwright ovládá Chromium, Firefox i WebKit a funguje s Pythonem i .NET, zatímco Puppeteer je spíš „Chrome-first“ a jen pro Node. Dvě upřesnění, protože verze se mění rychle: testoval jsem Playwright 1.56.0 proti aktuální 1.61.1 a použil jsem jen Chromium; Puppeteer 24.16.0 jsem porovnal s aktuální 25.3.0 — berte to tedy s patřičnou rezervou. Oba Apache-2.0; přibližně 92 tisíc a 95 tisíc hvězdiček.

Crawlee je ten, kdo řeší problém s frontou, kterou ostatní dva nechávají otevřenou. Pod jednu API vrstvu schovává Cheerio (HTTP) engine i Playwright (browser) engine a kontrast na jedné stránce je celý jeho prodejní argument: Cheerio engine viděl 0 JavaScriptem vložených položek, Playwright engine viděl lokálně všech 8/8 (a 10 na veřejném webu) a přepnutí mezi nimi je změna na jednom řádku. Navíc dostanete skutečnou RequestQueue, což je důvod, proč patří do tohoto úkolu a ne do třetího. Jedna věc, kterou v titulcích nikdo nepíše: browser engine potřebuje samostatné npx playwright install, což je asi 80 MiB, které vám npm install crawlee nestáhne automaticky. Verze 3.17.0, TypeScript, Apache-2.0, kolem 24,6 tisíce hvězdiček.

Úkol tři: rychle procházet web bez browseru

Když na stránce není JavaScript, je browser zbytečně drahý kanón na vrabce. Tři HTTP-first nástroje tu soupeří proti sobě, každý za jinou jazykovou filosofií, a liší se zajímavým způsobem.

Scrapy je z téhle trojice nejvíc „engineering-grade“ framework — spideri, exporty feedů do JSON/CSV/XML, AutoThrottle, všechno. Dosáhl 12/12 statického recallu, stáhl 3/3 odstavce z článku, prošel 11 stránek v hloubce 0–2 na crawl grafu a zachytil 500 přes handle_httpstatus_list. Nejzajímavější je ale jeho filozofie: nic nerenderuje, jen reprodukuje request. Když jsme na něj poslali JavaScriptovou stránku, dostal 0 uzlů — a pak ta samá stránka přes JSON API před ním otevřela 8/8. To je Scrapy v jedné datové větě: najít request, který stránka sama posílá, a přehrát ho, ne řídit browser. Cena za to je dost obsáhlý stack závislostí (Twisted, lxml, parsel) a testoval jsem ho jen na malých fixture. Verze 2.17.0, BSD-3-Clause, asi 63 tisíc hvězdiček.

Colly je odpověď z Go světa a je příjemně doslovný v tom, čím je: jedna statická binárka, callbacky přes OnHTML, OnResponse a OnError, plus řízení hloubky. Bez potíží zvládl 12/12 statického recallu, přes OnResponse vytáhl 8/8 z JSON API, přes OnError zachytil 500 a během crawl hloubky 2 dosáhl na 17 stránek — a říkám to přesně takhle, protože ten počet stránek je čítač z harnessu, ne záruka úplnosti, kterou by Colly sám sliboval. Co neumí, je JavaScript: dynamická fixture i veřejný Quotes JS web skončily 0, jak bylo zamýšleno. Na build budete potřebovat Go toolchain a verze modulu (v2.3.0) je teď napřed před tagovaným releasem (v2.2.0). Apache-2.0, zhruba 25 tisíc hvězdiček.

Scrapling je specialista a tenhle název si opravdu zaslouží. Jeho adaptivní selektory jsou postavené tak, aby znovu našly prvek poté, co se změní HTML — takže když jsem cílové třídě v markup změnil z product-name na product-title, obyčejný selektor našel 0, ale adaptivní přemapování sledovaný prvek stejně obnovilo. Při čisté HTTP extrakci trefil 12/12 staticky a 8/8 na JSON API. A otevřeně přiznaný limit jeho dokumentace? V syntetickém testu s více prvky obnovil 1 ze 3 — jde o odolné sledování prvku, ne o totální obnovu, takže to v hlavě nepřehánějte. Základní pip install scrapling navíc potřebuje extra balíček [fetchers], aby vůbec běžel, a StealthyFetcher je spíš compliance upozornění než funkce, kterou bych dával na slide. Verze 0.4.10 (aktuální release), BSD-3-Clause, kolem 68,7 tisíce hvězdiček.

Co z těch tří úkolů vlastně vyplývá

Když všech devět nástrojů postavíte vedle sebe, objeví se jasný vzorec. Plný statický recall — rovné 12/12 — je u každého HTTP-first nástroje jen vstupenka; ani jeden nezakolísal na snadném scénáři, takže to není rozlišovací znak. Browserové nástroje svou vyšší režii ospravedlňují jen tehdy, když je v tom opravdu JavaScript, a za tu cenu platí všichni: browser stack, extra instalace nebo celý kontejnerový balík. A sloupec „vestavěná crawl fronta“ je ve skutečnosti hranice mezi frameworkem a enginem — Scrapy a Crawlee přinášejí orchestrace, zatímco Playwright a Puppeteer vás nutí napsat BFS sami. Takhle vypadá celé pole. Nikdo nevyhrává celkově, protože nikdo nehraje stejnou hru.

Který nástroj si tedy máte skutečně vybrat

Benchmark odmítá korunovat jediného vítěze, protože správná odpověď není nástroj, ale otázka — který ze tří úkolů vlastně řešíte?

  • Potřebujete Markdown připravený pro LLM? Sáhněte po trafilatura, pokud chcete čistý článek; po Crawl4AI, když chcete zároveň CSS extrakci i JavaScript rendering v jedné knihovně; a po Firecrawl, pokud chcete konkrétně self-hosted službu a zvládnete jak licenci AGPL-3.0, tak váhu šesti kontejnerů.
  • Potřebujete renderovat JavaScript? Pro samotné renderování Playwright nebo Puppeteer — vybírejte podle enginu a jazyka, protože jinak jsou prakticky nerozhodně — a Crawlee, pokud chcete i orchestrace crawlů hotovou k použití místo ručního psaní.
  • Chcete rychle procházet statické stránky nebo reprodukovatelné API ve velkém? Scrapy jako plnohodnotný Python framework, Colly pro surovou rychlost v jedné Go binárce a Scrapling v případě, že je vaším skutečným problémem přežít změny v markup struktury.

Když nástroj sladíte s úkolem, jsou všechny tyhle volby obhajitelné. Když sáhnete do špatné kategorie — browserový nástroj na statické stránky nebo HTTP parser na JavaScriptovou aplikaci — ani nejlépe hodnocená knihovna na internetu vám nepomůže.

Kam se místo toho hodí spravované AI API

Upozornění k licenci Firecrawl AGPL-3.0

Všechny nástroje výše jsou zdarma, open-source a můžete si je sami provozovat. Jenže právě tohle je zároveň společná daň, kterou benchmark pořád znovu ukazuje: sami nesete browser prostředí, crawl logiku, závod ve zbrojení proti botům i veškerou údržbu. Pro spoustu týmů je přesně tahle kontrola tím hlavním důvodem, proč do toho jdou, a při komerčním použití je důležitá i mapa licencí — většina pole je permissive (Apache-2.0 u Crawl4AI, Crawlee, Playwright, Puppeteer a Colly; BSD-3 u Scrapy a Scrapling), zatímco self-hosted jádro Firecrawl s licencí AGPL-3.0 je nutné před komerčním nasazením opravdu pečlivě prověřit.

Jenže benchmark také ukázal, co tyhle nástroje nedělají. Renderování, crawling, strukturování i obcházení blokací — málokdy všechno najednou a nikdy bez vaší údržby. Spravované AI scraping API tenhle stack zjednoduší na jeden call. Naše vlastní vývojářské rozhraní v Thunderbit je jedna z možností; pro technické publikum je důležité hlavně API, MCP server a CLI, ne Chrome rozšíření. POST /distill vrací čistý Markdown a POST /extract vrací JSON podle schématu, přičemž JavaScript rendering i anti-bot ochrana běží na serveru, ne na vašem počítači. Pro agenty a coding asistenty je k dispozici oficiální MCP server — thunderbit_suggest_fields je zdarma a slouží k návrhu extrakce, pak thunderbit_distill (1 kredit) a thunderbit_extract (20 kreditů) udělají zbytek — a také CLI, které si můžete načíst přes npx @thunderbit/thunderbit-cli pro terminál a cron úlohy. Pro netechnické kolegy je tu i no-code Chrome extension a ceny pokrývají obě roviny.

Komprosmis je pořád stejný jako v celém benchmarku: buď si sami provozujete a udržujete až devět knihoven za nulovou cenu za volání, nebo předáte infrastrukturu dál a platíte za request. Ani jedna cesta není špatně. Jde jen o to, kolik ze stacku chcete skutečně vlastnit. Pokud radši uvidíte, jak extrakce vypadá v praxi, YouTube kanál Thunderbit vás tím provede.

{{INTERNAL_BLOG_LINKS}}

Verdikt

Neexistuje jeden nejlepší open-source scraper a každý seznam, který vám ho sebejistě nabídne, potichu skrývá otázku, která rozhoduje doopravdy: jaký z těch tří úkolů řešíte? Převést stránku na text, vykreslit JavaScript, nebo rychle procházet web bez browseru — pole se do těchto kategorií rozděluje úplně čistě a uvnitř každé z nich se volba láme spíš podle jazyka a náročnosti nastavení než podle nějakého univerzálního šampiona.

Jestli si z toho máte odnést jeden návyk, tak tento: než se pro cokoli rozhodnete, otestujte to na vlastních stránkách. Každé číslo tady je reprodukovatelné v benchmark repozitáři právě z toho důvodu — protože nástroj, který vede v obecném přehledu, a nástroj, který přežije vaše reálné cíle, často nejsou totéž.

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

FAQ

Jaký je nejlepší open-source web scraper? Není jediný — záleží na úkolu. Pro text připravený pro LLM trafilatura nebo Crawl4AI; pro renderování JavaScriptu Playwright, Puppeteer nebo Crawlee; pro rychlý HTTP crawling Scrapy nebo Colly. Na společném testovacím stole byl každý nástroj nejsilnější ve své kategorii a mimo ni znatelně slábnul, což je přesně důvod, proč jednorozměrné žebříčky klamou.

Které open-source scrapery umí renderovat JavaScript? Crawl4AI, Firecrawl, Playwright, Puppeteer a Playwright engine v Crawlee JavaScript renderují. Scrapy, Colly, trafilatura a výchozí HTTP fetcher v Scrapling ne — buď potřebují reprodukovatelné API za stránkou (přístup Scrapy, který z JSON endpointu získal 8/8), nebo samostatný browser režim.

Potřebuji na scraping webu headless browser? Jen pokud se data objeví až po spuštění JavaScriptu. Když obsah zachytí obyčejný HTTP request s parserem, je browser zbytečně drahý overkill — v takovém případě budou Scrapy, Colly nebo Scrapling mnohem lehčí a rychlejší.

Který z těchto nástrojů má nejpřívětivější licenci pro komerční použití? Většina je permissive: Apache-2.0 (Crawl4AI, Crawlee, Playwright, Puppeteer, Colly) nebo BSD-3-Clause (Scrapy, Scrapling). Výjimkou je self-hosted core Firecrawl s licencí AGPL-3.0, kterou je potřeba před nasazením do komerčního produktu opravdu pečlivě zkontrolovat.

Jsou tyto benchmarkové výsledky reprodukovatelné? Ano. Každý runner, fixture i surový výsledek je ve veřejném repozitáři s licencí MIT. Jen jedna důležitá poznámka: recall a strukturální výsledky jsou napříč nástroji srovnatelné, ale absolutní počty znaků platí jen uvnitř jednoho nástroje, protože každý balíček zrcadlí fixture, místo aby sdílel jednu kanonickou kopii — takže porovnávejte míry a úspěch/neúspěch, ne surové počty znaků.

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