6 min čtení
Web scraping pro firmy: jak sbírat data z webu levně a legálně
Web scraping ve firmě krok za krokem: otevřená data a API, sitemapy, levný filtr, prohlížeč jen kde musí. Dále kvalita dat, náklady a právo v ČR a EU.
Napsal František Jánoš, konzultant pro AI a datovou analýzu
Web scraping je automatické stahování údajů z webových stránek do tabulky nebo databáze. Firma ho používá, když potřebuje data, která nikdo neprodává v hotové podobě: seznam firem v regionu, ceník konkurence, technické parametry výrobků. Dobře postavený sběr začíná otevřenými daty a API, stránky stahuje jen tam, kde jiná cesta není, a hlídá kvalitu i právní mantinely.
Co si pod sběrem dat z webu představit
Scraper je program, který otevře stránku stejně jako prohlížeč, najde v ní potřebné údaje a uloží je do pevných sloupců. Výrobní firmy ho v praxi používají třeba na:
- seznam potenciálních zákazníků podle oboru a regionu, s IČO a adresou;
- sledování cen a dostupnosti u distributorů;
- přehled dodavatelů a jejich certifikací před výběrovým řízením;
- technické listy a parametry výrobků od více výrobců v jedné tabulce.
Stáhnout jednu stránku zvládne skript o pár řádcích. Problém začne u desítek tisíc stránek: weby se liší, část obsahu načítá JavaScript, servery omezují počet dotazů a v datech se objeví duplicity.
Postup, který používám
Pořadí kroků volím tak, aby drahé nástroje běžely jen na zlomku stránek.
- Otevřená data a API. Nejdřív hledám, jestli data někdo nepublikuje oficiálně. Pro české firmy existuje rejstřík ARES s API a ministerstvo spravedlnosti zveřejňuje otevřená data veřejných rejstříků. Data z API mají stálý formát a nerozbijí se se změnou vzhledu webu.
- Sitemapy. Většina webů má soubor
sitemap.xmlse seznamem všech adres. Z něj získám přehled stránek bez procházení odkazů a server přitom zatížím minimálně. - Levný filtr. Z adres a jednoduchého stažení HTML vyřadím stránky, které nepotřebuji. Tady obvykle odpadne většina objemu.
- Prohlížeč jen tam, kde je nutný. Stránky, které obsah načítají JavaScriptem, otevírám v prohlížeči bez okna (headless Chromium přes Playwright). Je to pomalé a drahé, proto ho pouštím až na zbytek po filtru.
- Hromadné stažení. Potvrzené adresy stahuji paralelně, s omezeným počtem dotazů na jeden server a s opakováním při chybě.
- Párování a kontrola. Každý záznam spáruji na identifikátor (u firem IČO), odstraním duplicity a spočítám, kolik záznamů se podařilo dohledat.
| Krok | Cena za stránku | Kdy ho použít |
|---|---|---|
| API, otevřená data | nejnižší | vždy jako první volba |
| Sitemap a stažení HTML | nízká | statické weby, katalogy, rejstříky |
| Headless prohlížeč | vysoká | obsah načítaný JavaScriptem, jen po filtru |
| Ruční sběr | nejvyšší | desítky záznamů, jednorázově |
Ochrana webů proti robotům a slušné chování
Provozovatelé webů se brání přetížení. Menší weby počítají dotazy z jedné adresy, větší používají služby, které rozpoznají automatického klienta a zobrazí mu CAPTCHA nebo prázdnou stránku. Narazil jsem na celou škálu, od žádné ochrany po několik vrstev, a sbíral jsem i přes VPN.
Blokování beru jako vzkaz od provozovatele. Když mě web zastaví, ptám se nejdřív, jestli data nejsou k dispozici jinak: přes API, export nebo dohodu s provozovatelem. Sám se držím několika pravidel:
- respektuji
robots.txta podmínky užití webu; - posílám dotazy s rozestupy a mimo špičku, abych neomezil běžné návštěvníky;
- scraper se představí v hlavičce
User-Agenta uvede kontakt; - nestahuji nic za přihlášením, ke kterému nemám oprávnění.
Ochrana má ještě jeden dopad, na kvalitu dat. Web, který vás odmítne, často vrátí stránku s kódem 200 a textem „ověřte, že nejste robot“. Když to scraper nepozná, uloží jako výsledek nesmysl. Proto u každé stažené stránky kontroluji, jestli obsahuje očekávané prvky.
Kvalita dat: deduplikace a párování na IČO
Stažená data mají smysl až po vyčištění. Stejná firma se objeví pod třemi názvy („s.r.o.“, „spol. s r.o.“, s překlepem), adresy mají různý zápis a část záznamů chybí. Postupuji takto:
- Identifikátor. U firem páruji na IČO. Kde IČO chybí, hledám ho podle názvu a adresy a výsledek označím jako méně jistý.
- Deduplikace. Záznamy se stejným IČO sloučím a nechám si ten nejnovější.
- Míra dohledání. Měřím podíl záznamů, které se podařilo spárovat, a zvlášť počítám chybové řádky. Bez těchto dvou čísel nevíte, jestli dataset můžete pustit do CRM.
- Ruční vzorek. Projdu namátkou několik desítek záznamů proti zdroji.
Na podobném principu jsem stavěl i párování podkladů pro rozúčtování: 7 580 řádků proti 6 995 záznamům z 301 zdrojových souborů, 91,3 % se spárovalo automaticky.
Z mé praxe
Databáze firem z veřejných rejstříků. Pro distributora techniky jsem z veřejných obchodních rejstříků sestavil dataset 93 412 subjektů. Dohledal jsem 98,1 % z nich a v datech nezůstal žádný chybový řádek. Výpočet v cloudu stál zhruba 1 USD. Adresy jsem geokódoval do PostGIS a nad daty vznikla mapa pro obchodníky, jednoduché CRM a plánovač tras v OR-Tools. Obchodník si tak vybere firmy v okolí a dostane pořadí návštěv.
Stahování odborných článků pro výzkum. Pro výzkumný ústav AV ČR jsem stavěl sběr vědeckých článků. Z XML sitemap vydavatelů jsem získal zhruba 1,8 milionu adres. Filtr v headless Chromiu s Playwrightem a rotujícími proxy vyřadil zhruba 90 % z nich, pro stránky, které Chromium neotevřelo, jsem měl záložní cestu přes Firefox. Zbytek stahovalo asynchronní hromadné stahování (asyncio, aiohttp). Celkem prošlo zpracováním 500 000 článků a z nich 31 830 obrázků grafů, nad kterými pak běžela segmentace křivek modelem U-Net.
Z obou projektů mám stejný závěr: stahování samo stojí málo. Čas zabere filtr, párování a kontrola.
V IGW Power jsem provedl přes 20 auditů dodavatelů v Evropě podle ISO a IRIS. Základní přehled o dodavateli před auditem (sídlo, vlastníci, certifikace uvedené na webu) dnes umí z veřejných zdrojů připravit scraper. Na auditorovi zůstane ověření na místě.
Právní mantinely v ČR a EU
Web scraping jako takový zákon nezakazuje. Záleží na tom, jaká data stahujete a co s nimi pak děláte. Tato část je přehled, ne právní rada; u většího projektu si nechte sběr posoudit právníkem.
| Oblast | Předpis | Co to znamená pro sběr dat |
|---|---|---|
| Osobní údaje | GDPR | Jméno, e-mail nebo telefon konkrétní osoby jsou osobní údaje i na veřejném webu. Potřebujete právní titul (obvykle oprávněný zájem s testem vyváženosti), musíte lidi informovat a sbírat jen nutné minimum. |
| Databáze | autorský zákon § 88–94, směrnice 96/9/ES | Pořizovatel databáze, který do ní podstatně investoval, má právo bránit vytěžování podstatné části obsahu. Zákon zakazuje i opakované a systematické stahování nepodstatných částí. |
| Vytěžování textů a dat | autorský zákon § 39c | Rozmnoženinu pro automatizovanou analýzu smíte pořídit i komerčně, ale autor si to může výslovně vyhradit. Online se výhrada obvykle dělá strojově čitelně, například v robots.txt. |
| Podmínky užití webu | smluvní právo | Když web strojový sběr zakazuje a vy s podmínkami souhlasíte (typicky registrací), porušení je smluvní riziko. |
| Robots.txt | RFC 9309 | Technický standard, ne zákon. Sám říká, že nejde o řízení přístupu, v EU ale slouží jako výhrada vůči vytěžování. |
U dat o firmách je situace jednodušší: IČO, sídlo a předmět podnikání právnické osoby nejsou osobní údaje. Jakmile ale ukládáte jména jednatelů nebo kontakty na konkrétní lidi, GDPR se vás týká. Pro oslovování firem e-mailem navíc platí pravidla pro obchodní sdělení.
U státních rejstříků sáhněte rovnou po otevřených datech, podmínky užití najdete u datové sady. U komerčních katalogů a agregátorů počítejte s tím, že databázi chrání právo pořizovatele.
Kdy se sběr dat vyplatí
Scraping se vyplatí, když data potřebujete pravidelně nebo ve velkém a nikdo je neprodává v použitelné podobě. Jednorázový seznam padesáti firem rychleji sestavíte ručně. Pokud data chcete propojit s interními systémy, podívejte se i na napojení AI na ERP přes MCP nebo na zpracování objednávek z e-mailu. Na čem jsem pracoval dřív, najdete v sekci co umím.
Časté dotazy
- Je web scraping v Česku legální?
- Samotné automatické stahování veřejných stránek zakázané není. Záleží na tom, co stahujete a jak. Osobní údaje podléhají GDPR, databáze může chránit zvláštní právo pořizovatele podle autorského zákona a web může mít podmínky užití, které strojový sběr omezují. Před větším projektem si to nechte posoudit právníkem.
- Kdy použít API místo scrapingu?
- Když API nebo otevřená data existují, použijte je. Pro české firmy nabízí stát rejstřík ARES a otevřená data veřejných rejstříků. Data z API mají stálý formát a nerozbijí se, když provozovatel změní vzhled webu.
- Kolik stojí stažení dat o desítkách tisíc firem?
- Výpočetní náklady bývají malé. Dataset 93 412 subjektů z veřejných rejstříků mě stál v cloudu zhruba 1 USD. Většinu ceny tvoří práce na čištění, párování a kontrole dat, ne samotné stahování.
- Zakazuje soubor robots.txt stahování dat?
- Robots.txt je technický standard (RFC 9309), ve kterém provozovatel říká robotům, kam nemají chodit. Podle samotného standardu nejde o řízení přístupu. V EU se ale strojově čitelná výhrada, typicky v robots.txt, používá k vyloučení výjimky pro vytěžování textů a dat. Proto ho respektuji.
- Jak poznat, že stažená data jsou správná?
- Počítejte, kolik záznamů se podařilo dohledat a kolik skončilo chybou, a ruční kontrolou projděte náhodný vzorek. Každý záznam firmy spárujte na IČO, tím odhalíte duplicity i překlepy v názvech.
Zdroje
- 01Zákon č. 121/2000 Sb., autorský zákon (§ 39c, § 88–94: zvláštní právo pořizovatele databáze), navštíveno 23. 10. 2026
- 02Směrnice 96/9/ES o právní ochraně databází, navštíveno 23. 10. 2026
- 03Nařízení (EU) 2016/679 (GDPR), navštíveno 23. 10. 2026
- 04RFC 9309: Robots Exclusion Protocol, navštíveno 23. 10. 2026
- 05Otevřená data veřejných rejstříků, Ministerstvo spravedlnosti ČR, navštíveno 23. 10. 2026
O autorovi
František Jánoš
Stavím nástroje na vytěžování faktur a poptávek, AI asistenty nad technickou dokumentací a napojení AI na ERP. Několik z nich je v ostrém provozu.
Co umím