Přejít na obsah
CleverComp
Datová analýza

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.

  1. 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.
  2. Sitemapy. Většina webů má soubor sitemap.xml se 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ě.
  3. 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.
  4. 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.
  5. Hromadné stažení. Potvrzené adresy stahuji paralelně, s omezeným počtem dotazů na jeden server a s opakováním při chybě.
  6. 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.
KrokCena za stránkuKdy ho použít
API, otevřená datanejnižšívždy jako první volba
Sitemap a stažení HTMLnízkástatické weby, katalogy, rejstříky
Headless prohlížečvysokáobsah načítaný JavaScriptem, jen po filtru
Ruční sběrnejvyšší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.txt a 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-Agent a 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.

OblastPředpisCo to znamená pro sběr dat
Osobní údajeGDPRJmé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ázeautorský zákon § 88–94, směrnice 96/9/ESPoř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 datautorský zákon § 39cRozmnož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í webusmluvní právoKdyž web strojový sběr zakazuje a vy s podmínkami souhlasíte (typicky registrací), porušení je smluvní riziko.
Robots.txtRFC 9309Technický 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

  1. 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
  2. 02Směrnice 96/9/ES o právní ochraně databází, navštíveno 23. 10. 2026
  3. 03Nařízení (EU) 2016/679 (GDPR), navštíveno 23. 10. 2026
  4. 04RFC 9309: Robots Exclusion Protocol, navštíveno 23. 10. 2026
  5. 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

Napište mi, co vás ve výrobě zdržuje

Projdeme to spolu na krátké schůzce a řeknu vám, jestli a jak se to dá řešit.

Domluvit konzultaci