Většina návodů na „gemini web scraping“ vypadá, jako by je psal pořád ten samý člověk: Python vývojář, který už má nastavené virtuální prostředí, Pydantic schema a silný názor na async knihovny. Pokud jste to vy, super — ke kódu se dostaneme. Jestli ale pracujete v sales, marketingu nebo ecommerce provozu a chcete jen strukturovaná data z pár webových stránek, aniž byste museli řešit, co přesně dělá markdownify, nejste v tom sami.
Gemini je multimodální AI rodina od Googlu a rychle se z ní stává jeden z hlavních nástrojů pro extrakci webových dat. Vývojářský průzkum Stack Overflow z roku 2025 ukázal, že 84 % vývojářů už AI nástroje používá nebo plánuje používat — a scraping poháněný LLM je velká část tohohle trendu. Jenže je obrovský rozdíl mezi „hezkou ukázkou na jedné URL“ a pipeline, která zvládne stránkování, podstránky, anti-bot ochranu i nepořádné HTML ve velkém. Tenhle průvodce pokrývá jak Python cestu (kód), tak no-code variantu, projde výběr modelu i s reálným výpočtem tokenů, ukáže scraping více stránek (to, co skoro každý jiný návod přeskočí) a otevřeně popíše, kde Gemini scraping selhává. Na konci budete vědět, která cesta sedí vašemu workflow — a jak se vyhnout problémům, na které narážejí vývojáři i business uživatelé.
Co je Gemini web scraping?
Gemini web scraping znamená, že obsahu webové stránky — HTML, Markdownu nebo třeba i screenshotu — předáte některému z modelů Gemini od Googlu, který stránku vyhodnotí a vrátí strukturovaná data. Žádné CSS selektory. Žádné XPath. Žádná křehká pravidla, která se rozbijí ve chvíli, kdy web trochu změní rozložení.
Základní postup vypadá takto:
- Načíst stránku (pomocí
requests, headless prohlížeče nebo Chrome rozšíření) - Vyčistit a převést obsah (typicky HTML → Markdown, aby se snížily náklady na tokeny)
- Poslat data do Gemini spolu se schématem polí, která chcete získat
- Dostat zpět strukturované JSON — připravené pro tabulku, CRM nebo databázi
Když to porovnáte s tradičním scrapingem přes BeautifulSoup nebo Selenium, kde natvrdo píšete selektory jako div.product-title > span.price a doufáte, že web příští úterý nezmění design, je rozdíl jasný. Gemini čte stránku podobně jako člověk — chápe kontext, přizpůsobí se změnám layoutu a zvládá i chaotické formátování bez vlastních pravidel.
Ještě jedna důležitá věc: Gemini je nativně multimodální. Umí zpracovat text, obrázky, video, audio, PDF i kód v jednom požadavku. To otevírá přístupy ke scrapingu — třeba poslat screenshot místo HTML — které většina ostatních LLM prostě neumí nabídnout. K tomu se ještě vrátíme.
Proč Gemini web scraping dává smysl pro business týmy
Pokud si kladete otázku, proč by se měl marketing manažer nebo ecommerce analytik zajímat o LLM a web scraping, odpověď je jednoduchá: ušetří to spoustu času a nerozbije se to pokaždé, když se web aktualizuje.
Trh se scrapingovým softwarem má podle prognóz růst zhruba z 1 miliardy dolarů v roce 2025 na víc než 2 miliardy do roku 2030 — a nejrychleji roste právě segment extrakce poháněné AI. Není to žádný hype; je to odraz skutečné změny v tom, jak týmy sbírají data.
Tady je, kde se Gemini scraping hodí v běžných business scénářích:
| Případ použití | Co se scrapuje | Kdo z toho těží |
|---|---|---|
| Generování leadů | Kontakty z adresářů, LinkedIn (veřejná data), firemní weby | Obchod, BDR |
| Sledování cen konkurence | Ceny produktů, dostupnost, akce | Ecommerce, cenové týmy |
| Extrakce katalogu produktů | Názvy, parametry, obrázky, recenze | Merchandising, marketplace provoz |
| Realitní inzerce | Detaily nemovitostí, ceny, informace o makléřích | Makléři, investoři |
| Agregace obsahu | Zprávy, blogy, zmínky na sociálních sítích | Marketing, PR |
| Průzkum trhu práce | Názvy pozic, mzdy, lokace | HR, nábor |
Praktický přínos je dvojí. Zaprvé odpadá cyklus psaní, testování a ladění parsovacích skriptů — model si stránku pokaždé přečte znovu čerstvě. Zadruhé nemusíte pokaždé volat vývojáře jen proto, že web přesunul jeden <div>. Bezplatný tarif Gemini navíc znamená, že experimentování je pro menší úlohy skoro zadarmo: zhruba 1 000 požadavků denně u Flash-Lite a 100 u Pro, bez nutnosti zadávat platební kartu.
Který model Gemini vybrat? (Flash Lite vs. Flash vs. Pro)
Ne všechny modely Gemini jsou pro scraping stejně vhodné. Tohle je praktické srovnání, které bych chtěl vidět v každém návodu, protože špatná volba buď zbytečně stojí peníze, nebo vrací nekvalitní data.
Všechny tři aktuální modely Gemini 2.5 sdílejí kontextové okno o velikosti 1 048 576 tokenů a jsou multimodální. Rozdíly jsou v ceně, rychlosti a schopnosti zvládat složitější extrakci.
| Model | Cena vstupu (za 1M tokenů) | Cena výstupu (za 1M tokenů) | Nejlepší pro | Přesnost u složitých schémat | Rychlost |
|---|---|---|---|---|---|
| Gemini 2.5 Flash Lite | ~$0.025 | ~$0.10 | Jednoduchá plochá data, velké objemy | ⚠️ Má potíže s vnořenými / volitelnými poli | Nejrychlejší |
| Gemini 2.5 Flash | ~$0.075 | ~$0.625 | Většina scraping úloh | ✅ Dobré pro strukturovanou extrakci | Rychlý |
| Gemini 2.5 Pro | ~$0.3125 | ~$2.50 | Složité vnořené schéma, okrajové případy | ✅ Nejvyšší přesnost | Nejpomalejší |
(Ceny podle Gemini Developer API. Batch API má 50% slevu oproti těmto sazbám.)
Gemini 2.5 Flash Lite: rychlý a levný, ale pozor na mezery
Flash Lite je rozpočtová varianta. Hodí se pro jednoduchá, plochá data — názvy produktů, ceny, seznamy s jednou úrovní — ve velkém objemu. Má ale zdokumentované problémy s volitelnými poli, časovými značkami a vnořenými daty. Jeden vývojář na fóru Googlu uvedl, že Flash Lite „se úplně zblázní“, když schema obsahuje nepovinné vlastnosti, a generuje opakovaný text až do vyčerpání token limitu. Pokud má vaše schema víc než dvě úrovně vnoření nebo pole, která na některých stránkách chybí, Flash Lite vám spálí tokeny i trpělivost.
Gemini 2.5 Flash: ideální kompromis pro většinu scraping úloh
Flash je podle mě výchozí volba pro skoro jakoukoli reálnou scraping úlohu. Dobře zvládá strukturovanou extrakci, pracuje s logikou stránkování a na vstupu stojí asi 3× víc než Flash Lite — ale ten skok v přesnosti za to stojí. V benchmarcích na úrovni GPQA je Flash jen pár bodů za Pro, což znamená, že si poradí s inferencí, normalizací i zploštěním dat, které scraping opravdu vyžaduje.
Gemini 2.5 Pro: maximální přesnost pro složitá data
Pro je nástroj na přesné úlohy. Použijte ho, když extrahujete hluboce vnořené schema (např. produktové specifikace s několika variantami, z nichž každá má velikosti, barvy a ceny), nebo když si nemůžete dovolit vymyšlená pole (právní, finanční, zdravotnická data). Na vstupu stojí zhruba 12× víc než Flash Lite, takže ho nechte na úlohy, kde je důležitější přesnost než cena.
Příklad nákladů: 10 000 produktových stránek
Když HTML nejdřív převedete do Markdownu (což byste měli — níže si vysvětlíme proč), typická produktová stránka klesne z přibližně 20 000 tokenů surového HTML na asi 4 000 tokenů Markdownu. Výstupní JSON má zhruba 500 tokenů na stránku.
| Model | Cena vstupu (40M tokenů) | Cena výstupu (5M tokenů) | Celkem pro 10 tisíc stránek |
|---|---|---|---|
| Flash Lite | $1.00 | $0.50 | ~$1.50 |
| Flash | $3.00 | $3.13 | ~$6.13 |
| Pro | $12.50 | $12.50 | ~$25.00 |
Bez preprocessing Markdownem (surové HTML s přibližně 200M tokenů vstupu) tato čísla narostou 4–5×. Předzpracování je v celé pipeline zdaleka nejdůležitější optimalizace.
Kód vs. bez kódu: dvě cesty k Gemini web scrapingu
Tady se cesty rozcházejí. Pokud jste vývojář a stavíte vlastní pipeline, cesta přes Python + Gemini API vám dá maximální kontrolu. Pokud jste business uživatel a data potřebujete hned, bez psaní skriptů a práce v terminálu, no-code AI scraper je rychlejší volba.
| Kritérium | Gemini API (Python) | Thunderbit (bez kódu) |
|---|---|---|
| Doba nastavení | 15–30 min (prostředí, klíče, knihovny) | < 1 min (instalace Chrome rozšíření) |
| Nutnost kódování | Ano (Python, Pydantic) | Ne |
| Řešení stránkování | Ruční skriptování | Vestavěné (kliknutí nebo infinite scroll) |
| Extrakce podstránek | Vlastní kód pro každý web | Jedním klikem „Scrape Subpages“ |
| Správa token nákladů | Ručně (čištění HTML, volba modelu) | Řeší AI engine |
| Možnosti exportu | JSON/CSV přes skript | Excel, Google Sheets, Airtable, Notion |
| Nejlepší pro | Vývojáře budující vlastní pipeline | Business uživatele, kteří potřebují data hned |
Thunderbit je no-code varianta, kterou jsme vyvinuli v Thunderbit — Chrome rozšíření, které využívá AI (včetně Gemini, ChatGPT, Claude a dalších pod kapotou), aby navrhlo pole, provedlo scraping na dvě kliknutí a exportovalo data do nástroje podle vašeho výběru. Níže projdu obě cesty.
Pro uživatele, kteří pracují hlavně v tabulkách, stojí za zmínku také Quadratic — AI spreadsheet, který umí web scraping poháněný Gemini přímo uvnitř tabulky. Ale pro workflow, které začíná na konkrétní webové stránce (produktové seznamy, adresáře, lead databáze), Thunderbit odpovídá mentálnímu modelu uživatele mnohem líp.
Krok za krokem: Gemini web scraping s Pythonem
Tahle část je pro vývojáře. Pokud chcete no-code cestu, přeskočte dál.
Než začnete:
- Obtížnost: Střední (je potřeba znát Python)
- Čas: ~20–30 minut pro první scraping
- Co budete potřebovat: Python 3.10+, účet Google AI Studio (zdarma), cílovou URL
Krok 1: Nastavení Python prostředí a Gemini API klíče
Vytvořte si složku projektu a virtuální prostředí, pak nainstalujte potřebné knihovny:
mkdir gemini-scraper && cd gemini-scraper
python -m venv venv && source venv/bin/activate
pip install -U google-genai requests beautifulsoup4 markdownify pydantic
Důležité: Jediný správný SDK v roce 2026 je google-genai. Starší balíček google-generativeai dosáhl konce podpory 2025-11-30 a je už zastaralý. Pokud v návodu vidíte import google.generativeai as genai, jde o neaktuální kód.
Pak si vezměte API klíč v Google AI Studiu. Klikněte na „Get API Key“, vytvořte nový klíč a uložte ho jako proměnnou prostředí:
export GEMINI_API_KEY="your-key-here"
Teď byste měli mít připravené Python prostředí se všemi závislostmi i API klíčem.
Krok 2: Stažení HTML cílové stránky
Na načtení stránky použijte requests. Pro příklad budeme scrapovat stránku produktu:
import requests
url = "https://example.com/product/widget-pro"
response = requests.get(url, headers={"User-Agent": "Mozilla/5.0"}, timeout=30)
html = response.text
Pokud web používá silný JavaScript nebo anti-bot ochranu, requests.get() může vrátit prázdnou skořápku nebo chybu 403. O tom, jak to obejít, si řekneme v části o limitech — ale u mnoha veřejných webů to funguje bez problému.
Krok 3: Vyčištění HTML a převod do Markdownu
Tohle je krok, který většina návodů zmíní, ale nevyčíslí. Surové HTML u běžné produktové stránky zabere asi 20 000 tokenů. Po očištění přes BeautifulSoup a převodu do Markdownu se dostanete zhruba na 765–4 000 tokenů — tedy 5–10× méně, což reálně šetří peníze a snižuje halucinace.
from bs4 import BeautifulSoup
from markdownify import markdownify
soup = BeautifulSoup(html, "html.parser")
main = soup.select_one("main") or soup # vezmeme jen hlavní obsah
markdown_content = markdownify(str(main))
Volání select_one("main") odstraní hlavičky, patičky, navigaci a skripty — tedy šum, který zbytečně žere tokeny a mate model. Pokud web nepoužívá tag <main>, zkuste .product-detail, #content nebo jakýkoli jiný obal kolem skutečných dat.
Po tomhle kroku byste měli mít čistý Markdown řetězec jen s relevantním obsahem stránky.
Krok 4: Definujte datové schéma a pošlete ho do Gemini
Pomocí Pydanticu si určete, co chcete dostat zpět. SDK google-genai umí Pydantic BaseModel předat přímo jako response_schema:
from google import genai
from google.genai import types
from pydantic import BaseModel
class Product(BaseModel):
name: str
price: str
sku: str | None = None
description: str
sizes: list[str] = []
colors: list[str] = []
client = genai.Client() # načte GEMINI_API_KEY z prostředí
response = client.models.generate_content(
model="gemini-2.5-flash",
contents=f"Z této stránky extrahuj údaje o produktu:\n\n{markdown_content}",
config=types.GenerateContentConfig(
response_mime_type="application/json",
response_schema=Product,
),
)
product = response.parsed
print(product)
Pár nástrah z dokumentovaného seznamu chyb:
- Nepoužívejte
Field(default=...)ve schématech, která posíláte Gemini — API vrátíValueError. Místo toho používejte na úrovni typusku: str | None = None. - Vnoření udržujte mělké (maximálně 3 úrovně). Příliš hluboké schema způsobí, že Flash a Flash Lite budou generovat rekurzivní výstup nebo neuzavřené závorky.
- U Flash Lite označte pole jako povinná, pokud to jde, a pro chybějící hodnoty používejte prázdné řetězce místo vynechání — práce s volitelnými poli je u Flash Lite nespolehlivá.
Teď byste měli mít parsovaný objekt Product se strukturovanými daty ze stránky.
Krok 5: Export a uložení scraped dat
Výsledek uložte jako JSON nebo CSV:
import json
with open("products.json", "w") as f:
json.dump(product.model_dump(), f, indent=2)
Pro napojení do Google Sheets můžete použít knihovnu gspread. Pro databáze serializujte data do ORM podle vašeho výběru. Strukturovaný výstup z Gemini je dost čistý na to, aby šel rovnou do většiny downstream nástrojů.
Krok za krokem: Gemini web scraping bez kódu (s Thunderbit)
Tohle je cesta pro business uživatele — nebo pro vývojáře, kteří nechtějí psát jednorázové scraping skripty.
Než začnete:
- Obtížnost: Začátečník
- Čas: ~5 minut pro první scraping
- Co budete potřebovat: Prohlížeč Chrome, Thunderbit rozšíření (funguje i free tier)
Krok 1: Nainstalujte rozšíření Thunderbit pro Chrome
Otevřete Chrome Web Store a klikněte na „Add to Chrome“. Zaregistrujte se e-mailem — celý proces zabere méně než minutu. Porovnejte to s 15–30 minutami nastavení Pythonu výše.
Krok 2: Otevřete cílovou stránku a klikněte na „AI Suggest Fields“
Přejděte na web, který chcete scrapovat — produktový listing, realitní adresář, lead databázi, cokoli. Klikněte v prohlížeči na ikonu Thunderbit a pak na „AI Suggest Fields.“
AI v Thunderbitu stránku přečte a automaticky doporučí názvy sloupců i datové typy — třeba „Product Name“, „Price“, „Rating“, „Image URL“. Můžete upravit názvy sloupců, odstranit pole, která nepotřebujete, nebo přidat vlastní AI prompt ke každému sloupci (například „zařaď jako High/Medium/Low“ nebo „přelož do angličtiny“).
Před samotným scrapováním byste měli vidět náhled tabulky s nakonfigurovanými sloupci.
Krok 3: Klikněte na „Scrape“ a zkontrolujte výsledky
Jedno kliknutí. Thunderbit zvládne stránkování — jak tlačítka typu „Next“, tak infinite scroll — a vytáhne data do strukturované tabulky. Můžete si vybrat mezi:
- Cloud Scraping: Rychlejší, zvládne až 50 stránek současně. Funguje na veřejných webech.
- Browser Scraping: Běží ve vašem přihlášeném prohlížeči. Použijte pro weby vyžadující autentizaci (CRM, uzavřené adresáře, interní nástroje).
Výsledky se zobrazí přímo v tabulce v postranním panelu rozšíření. Než data exportujete, rychle je projděte kvůli zjevným chybám.
Krok 4: Exportujte do Excelu, Google Sheets, Airtable nebo Notion
Klikněte na export a vyberte formát. Thunderbit exportuje do Excelu, Google Sheets, Airtable i Notion — zdarma, bez paywallu. Obrázková pole se nahrávají přímo do Notionu a knihoven obrázků v Airtable, což se hodí, pokud scrapujete produktové fotky nebo portréty.
Žádné parsování JSON. Žádné skriptování. Data můžete používat hned.
Scraping více stránek a podstránek s Gemini
Většina návodů potichu skončí po jedné URL. Reálné scraping úlohy ne.
Scraping 500 produktových stránek se stránkováním a detailními podstránkami je práce — a rozdíl mezi jednou demo URL a touhle realitou je obrovský.
Jak řešit stránkování přes Gemini API (kód)
U URL s číslováním stránek (nejběžnější případ) je nejlepší procházet stránky v cyklu, dokud nedostanete prázdný výsledek:
import time
all_products = []
for page in range(1, 101): # až 100 stránek
url = f"https://example.com/products?page={page}"
md = fetch_clean(url) # vaše dřívější funkce HTML→Markdown
response = client.models.generate_content(
model="gemini-2.5-flash-lite", # levné pro seznamové stránky
contents=f"Extrahuj názvy produktů a URL:\n\n{md}",
config=types.GenerateContentConfig(
response_mime_type="application/json",
response_schema=list[ListingItem],
),
)
items = response.parsed
if not items:
break
all_products.extend(items)
time.sleep(4) # respektujte limity free tieru
U webů s cursor-based stránkováním nebo infinite scroll budete muset zachytit XHR endpoint, který front-end volá (zkontrolujte kartu Network v prohlížeči), a volat přímo ten. Je to levnější než znovu renderovat stránku, a do Gemini posíláte jen ta data, která potřebují LLM vyčištění.
Dávejte pozor na náklady na tokeny — každá další stránka zvyšuje účet. Pro jednoduché seznamové stránky používejte Flash Lite a na detailní extrakci přepínejte na Flash až ve chvíli, kdy je to potřeba.
Jak scrapovat podstránky pro bohatší data (kód)
Klasický dvoufázový vzor: 1. fáze vytáhne z listing stránky URL, 2. fáze navštíví každou detailní stránku a získá bohatší data.
# Fáze 1: získání URL pomocí levného Flash Lite
class Listing(BaseModel):
product_urls: list[str]
listing = client.models.generate_content(
model="gemini-2.5-flash-lite",
contents=f"Extrahuj URL produktů:\n{listing_md}",
config=types.GenerateContentConfig(
response_mime_type="application/json",
response_schema=Listing,
),
).parsed
# Fáze 2: detailní extrakce pomocí Flash
class ProductDetail(BaseModel):
name: str
price: str
specs: dict[str, str]
reviews: list[str]
for url in listing.product_urls:
md = fetch_clean(url)
detail = client.models.generate_content(
model="gemini-2.5-flash",
contents=f"Extrahuj detail produktu:\n{md}",
config=types.GenerateContentConfig(
response_mime_type="application/json",
response_schema=ProductDetail,
),
).parsed
# uložit detail...
time.sleep(0.5)
Funguje to, ale je s tím hodně práce: deduplikace URL, ošetření chyb, rate limiting, retry logika, caching surového HTML, aby se kvůli úpravě schématu nemusel znovu stahovat obsah. Pro 50 stránek je to zvládnutelné. Pro 5 000 už stavíte infrastrukturu.
No-code alternativa: vestavěné stránkování a scraping podstránek v Thunderbit
Thunderbit zvládá jak klikací stránkování, tak infinite scroll automaticky — není potřeba psát cykly. Pro obohacení dat z podstránek funkce „Scrape Subpages“ navštíví každou detailní stránku z vašeho seznamu a doplní původní tabulku o hlubší pole. Jedno kliknutí, ne jeden skript.
Cloud režim zvládne až 50 stránek najednou, což je při scrapování produktového katalogu nebo realitního adresáře ve větším měřítku opravdu znát. Pro každého, kdo nechce řešit Python smyčky a retry logiku, je to praktická volba. (Více o scrapování dat z webů do Excelu najdete v samostatném návodu.)
Scraping ze screenshotu: multimodální zkratka Gemini
Tady je přístup, který většina návodů úplně přeskočí: poslat do vision API Gemini snímek obrazovky webové stránky místo surového HTML. Jeden vývojář uvedl, že jeden screenshot stojí jen asi ~258 tokenů — oproti tisícům i u vyčištěného Markdownu. U jednoduchých extrakcí je to dramatický rozdíl v ceně.
Jak použít Gemini Vision API pro web scraping
Uděláte screenshot pomocí Playwrightu, zakódujete ho a pošlete do Gemini:
from playwright.sync_api import sync_playwright
from google import genai
from google.genai import types
from pydantic import BaseModel
class Product(BaseModel):
title: str
price: str
with sync_playwright() as p:
page = p.chromium.launch().new_page()
page.goto("https://example.com/product/widget-pro")
page.wait_for_load_state("networkidle")
png_bytes = page.screenshot(full_page=False) # jen obsah nad ohybem
client = genai.Client()
resp = client.models.generate_content(
model="gemini-2.5-flash",
contents=[
{"inline_data": {"mime_type": "image/png", "data": png_bytes}},
"Extrahuj název produktu a cenu jako JSON.",
],
config=types.GenerateContentConfig(
response_mime_type="application/json",
response_schema=Product,
),
)
print(resp.parsed)
Podle dokumentace Googlu k tokenům pro obrázky stojí obrázek, u kterého jsou oba rozměry ≤ 384 pixelů, 258 tokenů. Větší obrázky se rozřezávají na dlaždice 768×768 a každá stojí 258 tokenů. Krátký screenshot nad ohybem (258–1 600 tokenů) je pořád výrazně levnější než surové HTML — ale velmi vysoký full-page screenshot (~5 000 tokenů) může být dražší než čistý Markdown (~765–1 200 tokenů).
Omezení scraping ze screenshotu
- Nižší přesnost u hustých tabulek: Vícesloupcové layouty, malé písmo a překrývající se prvky způsobují částečné čtení — ne halucinace, ale vynechané popisky a posunuté hlavičky.
- Neumí následovat odkazy: Vision vrací text, ne klikatelné odkazy. Žádné stránkování, žádné podstránky.
- Limit rozlišení: Text menší než přibližně 10 px bývá často přečten špatně. Google zmenšuje delší stranu zhruba na 1 568 px.
- Režie na zachycení: Spuštění Playwrightu + čekání na
networkidletrvá 2–5 sekund na stránku, což se ve velkém nasčítá.
Scraping ze screenshotu je skvělý pro stránky s těžkým JavaScriptem, weby blokované botům (kde requests.get() vrací 403, ale v prohlížeči se stránka normálně zobrazí) a stránky, kde jsou data vložená do grafů nebo obrázků. U dlouhých textových stránek je ale pořád lepší Markdown.
Image a PDF scraping v Thunderbit používá podobný AI vision přístup — nahraješ obrázek nebo PDF a systém vrátí strukturovanou tabulku, bez skriptování screenshotů a bez řešení base64. (Viz také: jak převést obrázky do Excelu.)
Kdy Gemini web scraping selhává (a co místo toho)
Gemini je engine na extrakci, ne na stahování. Když se obsah stránky nedostane do Gemini, nepomůže vám. Tečka.
Existuje několik běžných situací, kdy celý přístup selže, a většina návodů je zmiňuje jen mimochodem. Já radši mluvím napřímo.
| Omezení | Co se stane | Jak to řešit |
|---|---|---|
| Anti-bot / Cloudflare | API požadavky jsou blokované; requests.get() vrací 403 nebo challenge stránku | Použijte proxy s rotací TLS fingerprintu, nebo browser-based nástroje (browser scraping mód Thunderbit používá vaši přihlášenou relaci) |
| Limity kontextového okna | Velké stránky překročí použitelný kontext (~200K–300K pro spolehlivou extrakci, i když 1M je technicky podporováno) | HTML→Markdown čištění, rozdělení stránek nebo screenshoty |
| Halucinace u vizuálního obsahu | Gemini hádá z alt textů nebo popisků místo skutečného obsahu obrázku | Výstupy validujte; pro obrazová data použijte explicitně vision API; přidejte grounding validátory |
| Rate limiting API | Při škálování dochází ke throttlingu — free tier má cca 100 RPD u Pro a 1 000 RPD u Flash Lite | Fronty, batch processing (50% sleva) nebo přechod na hotové nástroje |
| Nekonzistentní extrakce (Lite modely) | Volitelná pole, časové značky a vnořená data se ztrácí nebo vymýšlí | Přejděte na Flash/Pro nebo přidejte přísnější schema omezení |
| Chráněné weby (LinkedIn apod.) | Vrací chyby nebo prázdná data | Browser-based scraping s aktivní relací (Thunderbit to podporuje); dodržujte podmínky použití |
Některé z těchto bodů si zaslouží trochu víc kontextu.
Anti-bot dnes aktivně rozpoznává i LLM provoz. Cloudflare od července 2025 blokuje AI crawlery ve výchozím stavu a za prvních pět měsíců zablokoval 416 miliard požadavků od AI botů. Datadome v roce 2025 přidal detekci specifickou pro LLM a zaznamenal čtyřnásobný nárůst LLM bot trafficu. Samotné requests.get() + Gemini je proti webům chráněným Datadome prakticky mrtvé. Problém není IP adresa, ale fingerprint — samotná rotace IP nic neřeší, pokud TLS fingerprint křičí „Python requests“.
Halucinace jsou nenápadné. LLM trénované na užitečnost radši vyplní volitelná pole uvěřitelně znějící fikcí, než aby vrátily null. Viděl jsem modely, které odhadly značku produktu z URL slug, odvodily měnu z TLD a napsaly uvěřitelně vypadající, ale falešný počet recenzí z placeholderů. Osvědčený postup: přísná Pydantic schema, retry smyčky s validační zpětnou vazbou, grounding validátory, které kontrolují, že extrahované hodnoty opravdu existují ve zdrojovém HTML, a dvoufázová extrakce (Flash extrahuje, Pro ověří vzorek).
1M kontextové okno není použitelné celé. Výzkum Chroma a dalších ukazuje, že kvalita uvažování se zhoršuje dávno před dosažením limitu tokenů. Pro strukturovanou extrakci berte jako praktický strop zhruba 200K–300K tokenů.
Rozhodovací strom: který nástroj použít?
- Nízký objem + jednoduché stránky + vývojář → Gemini API free tier + Python
- Střední objem + složité schema + vývojář → placený Gemini 2.5 Flash + Python + strukturovaný výstup + preprocessing
- Jakýkoli objem + bez vývoje + web za loginem nebo hodně stránkování → Thunderbit
- Velmi vysoký objem + silná anti-bot ochrana + kritická úloha → spravovaná scraping infrastruktura (proxy služby) + Gemini jako vrstva pro extrakci
Gemini web scraping: tipy, jak ušetřit čas i peníze
Ať už píšete Python, nebo klikáte v rozhraní, tyhle tipy vám ušetří spoustu starostí.
- Vždy předem převádějte HTML do Markdownu, než ho pošlete do Gemini. Úspora tokenů 5–10× je běžná; až 95 % se dá dosáhnout, když HTML zároveň předem oříznete přes BeautifulSoup.
- Používejte jen
google-genai. Nepoužívejte zastaralý balíčekgoogle-generativeai— je po konci podpory. - Na Flash Lite začínejte jen u plochých schémat. Jakmile se objeví vnoření nebo volitelná pole, přejděte na Flash.
- Nepoužívejte
Field(default=...)v Pydantic schématech, která posíláte Gemini. Na úrovni typu používejtesku: str | None = None. - Pydantic +
response_schemaje zásadní prvek — je to zároveň smlouva i pojistka proti halucinacím. - Pro úlohy nad 1 000 stránek použijte Batch API — sleva 50 % a nepočítá se do realtime RPM.
- Před škálováním nového extraktoru ručně zkontrolujte náhodný vzorek 10–50 řádků. Odchylky v přesnosti nejsou vidět, dokud se nepodíváte.
- Ukládejte surové HTML na disk — úpravy schématu by neměly znamenat nové stahování.
- Ke každému řádku ukládejte zdrojovou URL, abyste mohli jednotlivé stránky znovu projít bez opakování celé úlohy.
- Pro no-code uživatele: využívejte vlastní AI prompt pro každý sloupec v Thunderbitu a přeneste prompt engineering do tabulky — překlad, kategorizaci i shrnutí řešte na úrovni sloupců.
A ještě jedna věc: neposílejte free tier do produkce. Limity byly v prosinci 2025 sníženy o 50–80 % a mohou být bez upozornění sníženy znovu.
Závěr
Rozdíl mezi jednou ukázkou Gemini na jedné URL a produkční pipeline je mnohem větší, než většina návodů přiznává.
Cesta přes Python + Gemini API dává vývojářům plnou kontrolu nad výběrem modelu, preprocessingem, stránkováním i návrhem schématu. No-code cesta — nástroje jako Thunderbit — zase umožní business uživatelům získat stejná strukturovaná data bez otevření terminálu.
Tady je můj hlavní závěr:
- Na výběru modelu záleží. Flash Lite pro objem, Flash pro rovnováhu, Pro pro složitost. Nesázejte automaticky na nejlevnější variantu a pak se nedivte, že jsou data špatně.
- Scraping více stránek a podstránek je místo, kde většina návodů selhává — a zároveň místo, kde se odehrává skutečná práce. Obě cesty v tomhle článku tuhle mezeru řeší.
- Upřímná zmínka o limitech vám ušetří čas. Pokud web blokuje API požadavky, žádné prompty vám nepomůžou. Vyberte správný nástroj pro danou práci, ne ten nejokázalejší.
- Převod HTML do Markdownu je nejúčinnější optimalizace — snižuje náklady o víc než 75 % a omezuje halucinace.
Pokud chcete vyzkoušet no-code cestu, free tier Thunderbitu vám umožní scrapovat pár stránek a podívat se na výsledky na vlastní oči. Pokud radši kódujete, free API tier Gemini stačí na to, abyste si pipeline prototypovali během jednoho odpoledne. V obou případech získáte strukturovaná data rychleji, než by to kdy zvládlo kopírování a vkládání. Více o extrakci dat z webů do Excelu nebo nejlepších AI web scraperech najdete na našem blogu.
Vyzkoušejte Thunderbit pro AI web scraping Get Started Free
Často kladené otázky
Kolik stojí použití Gemini pro web scraping?
Gemini API má bezplatný tarif, který nabízí zhruba 100 požadavků denně pro Pro, 500 denně pro Flash a 1 000 denně pro Flash Lite (stav začátek roku 2026 — tyto limity byly v prosinci 2025 sníženy). U placeného tarifu stojí scraping 10 000 produktových stránek přibližně 1,50 USD s Flash Lite, 6 USD s Flash nebo 25 USD s Pro — za předpokladu, že HTML nejprve převedete do Markdownu. Bez preprocessing náklady vzrostou 4–5×. Batch API nabízí 50% slevu pro ne-realtime úlohy.
Dokáže Gemini scrapovat weby, které vyžadují přihlášení?
Samotné Gemini API se na weby nepřihlašuje — zpracovává pouze obsah, který mu pošlete. HTML si musíte načíst sami ve své autentizované relaci (např. pomocí headless prohlížeče a uložených cookies). Režim Browser Scraping v Thunderbitu to řeší nativně: běží ve vašem přihlášeném Chrome tabu, takže jakýkoli web, který vidíte v prohlížeči, Thunderbit zvládne scrapovat.
Je Gemini web scraping legální?
Legálnost závisí na podmínkách webu, typu dat a vaší jurisdikci. V USA je po rozhodnutích hiQ v. LinkedIn a Meta v. Bright Data scraping veřejně dostupných dat bez přihlášení obecně považován za přípustný — ale každý případ je individuální. Scraping za přihlášením s sebou nese vyšší právní riziko. Osobní údaje obyvatel EU podléhají GDPR bez ohledu na to, zda je web veřejný. Vždy respektujte robots.txt a podmínky použití a nescrapujte osobní data bez právního důvodu.
Můžu použít Gemini na scraping dynamických webů s JavaScriptem?
Ano, ale nejdřív musíte JavaScript vyrenderovat — buď pomocí headless prohlížeče (Playwright, Puppeteer), nebo přímým zachycením API endpointů, které web používá. Jakmile máte vyrenderované HTML, vyčistěte ho a pošlete Gemini jako obvykle. Alternativně můžete použít screenshot scraping přes Gemini vision API, který renderování JS obejde úplně — co se zobrazí v prohlížeči, to Gemini uvidí. Thunderbit zvládá stránky vykreslené přes JS automaticky v Cloud i Browser režimu.
Jaký je rozdíl mezi použitím Gemini na scraping a specializovaným nástrojem jako Thunderbit?
Gemini je engine na extrakci — interpretuje obsah a vrací strukturovaná data. Neprochází weby, neřeší stránkování, autentizaci ani export do tabulek. Stále potřebujete něco, co dostane obsah stránky do Gemini, a něco, co s výsledky dál pracuje. Specializované nástroje jako Thunderbit spojují stahování, renderování, AI extrakci, stránkování, obohacení podstránek i export do jednoho balíčku — bez složitého propojování.
Další informace


