Gemini Web Scraping, Które Naprawdę Działa (Kod + No-Code)

Ostatnia aktualizacja: April 15, 2026
Gemini Web Scraping, Które Naprawdę Działa (Kod + No-Code)

Większość poradników o „gemini web scraping” wygląda tak, jakby pisała je ta sama osoba: programista Pythona, który ma już ogarnięte wirtualne środowisko, schemat Pydantic i mocne zdanie na temat bibliotek async. Jeśli to Ty — super, zaraz przejdziemy do kodu. Ale jeśli pracujesz w sprzedaży, marketingu albo ecommerce ops i po prostu chcesz mieć uporządkowane dane z kilku stron internetowych, bez zgłębiania tego, czym właściwie jest markdownify, nie jesteś sam.

Gemini to multimodalna rodzina modeli AI Google i bardzo szybko wyrasta na jeden z najczęściej wybieranych silników do ekstrakcji danych z internetu. Według 2025 Stack Overflow Developer Survey aż 84% developerów korzysta z narzędzi AI albo planuje to robić — a scraping wspierany przez LLM-y to spora część tego trendu. Między „fajnym demo na jednym URL-u” a pipeline’em, który ogarnia paginację, podstrony, zabezpieczenia anty-botowe i chaotyczny HTML na dużą skalę, jest jednak ogromna różnica. Ten przewodnik pokazuje zarówno podejście w Pythonie (code), jak i bez kodu, prowadzi przez wybór modelu z konkretną matematyką tokenów, omawia scraping wielu stron naraz (czyli krok, który inni pomijają) i uczciwie pokazuje, gdzie Gemini zaczyna się wykładać. Na końcu będziesz wiedzieć, która ścieżka pasuje do Twojego workflow — i jak uniknąć pułapek, które widziałem zarówno u developerów, jak i u użytkowników biznesowych.

Czym jest Gemini Web Scraping?

Gemini web scraping polega na przekazaniu zawartości strony — HTML, Markdowna, a nawet zrzutu ekranu — do jednego z modeli Gemini od Google, który potem interpretuje stronę i zwraca uporządkowane dane. Bez selektorów CSS. Bez XPath. Bez kruchych reguł, które rozsypują się przy pierwszej zmianie układu strony.

Typowy proces wygląda tak:

  1. Pobierz stronę (requests, headless browser albo rozszerzenie Chrome)
  2. Wyczyść i przekonwertuj zawartość (zwykle HTML → Markdown, żeby obniżyć koszty tokenów)
  3. Wyślij do Gemini ze schematem opisującym pola, których potrzebujesz
  4. Odbierz uporządkowany JSON — gotowy do arkusza, CRM albo bazy danych

Dla porównania: klasyczny scraping w BeautifulSoup albo Selenium oznacza twarde kodowanie selektorów typu div.product-title > span.price i liczenie na to, że strona nie zmieni wyglądu do przyszłego wtorku. Gemini czyta stronę bardziej jak człowiek — łapie kontekst, radzi sobie ze zmianami układu i ogarnia nieuporządkowane formatowanie bez własnych reguł.

Warto też pamiętać o jednej rzeczy: Gemini jest natywnie multimodalny. Przetwarza tekst, obrazy, wideo, audio, PDF-y i kod w jednym zapytaniu. To otwiera podejścia do scrapingu — na przykład wysyłanie zrzutu ekranu zamiast HTML — z którymi większość innych LLM-ów po prostu nie ma szans. Wrócimy do tego później.

Dlaczego Gemini Web Scraping ma znaczenie dla zespołów biznesowych

Jeśli zastanawiasz się, dlaczego menedżer marketingu albo analityk ecommerce miałby interesować się LLM-ami i scrapingiem, odpowiedź jest prosta: to oszczędza mnóstwo czasu i nie psuje się za każdym razem, gdy strona się aktualizuje.

Prognozuje się, że rynek oprogramowania do web scrapingu wzrośnie z około 1 miliarda dolarów w 2025 do ponad 2 miliardów w 2030 roku — a ekstrakcja oparta na AI to najszybciej rosnący segment. To nie jest hype; to realna zmiana w sposobie zbierania danych przez zespoły.

Tak Gemini scraping wpisuje się w codzienne procesy biznesowe:

Przypadek użyciaCo scrapujeszKto zyskuje
Generowanie leadówDane kontaktowe z katalogów, publiczny LinkedIn, strony firmoweSprzedaż, BDR
Monitoring cen konkurencjiCeny produktów, stany magazynowe, promocjeEcommerce, zespoły cenowe
Ekstrakcja katalogu produktówNazwy, specyfikacje, obrazy, recenzjeMerchandising, operacje marketplace
Oferty nieruchomościSzczegóły nieruchomości, ceny, dane agentaAgenci, inwestorzy
Agregacja treściWiadomości, wpisy blogowe, wzmianki w social mediaMarketing, PR
Badanie rynku pracyNazwy stanowisk, wynagrodzenia, lokalizacjeHR, rekrutacja

Korzyści są w praktyce dwie. Po pierwsze, omijasz cykl pisania, testowania i debugowania parserów — model za każdym razem czyta stronę od nowa. Po drugie, nie musisz zatrudniać programisty za każdym razem, gdy jakaś strona przesunie jeden <div>. Darmowy tier Gemini oznacza, że eksperymentowanie przy małych projektach jest niemal bezkosztowe: około 1 000 zapytań dziennie w Flash-Lite i 100 dziennie w Pro, bez karty płatniczej.

Który model Gemini wybrać? (Flash Lite vs. Flash vs. Pro)

Nie wszystkie modele Gemini nadają się do scrapingu tak samo dobrze. To praktyczne porównanie, którego brakuje w większości poradników, a zły wybór modelu oznacza albo przepłacanie, albo śmieciowe dane.

Wszystkie trzy aktualne modele Gemini 2.5 mają okno kontekstu 1 048 576 tokenów i są multimodalne. Różnią się kosztem, szybkością i skutecznością przy złożonej ekstrakcji.

ModelKoszt wejścia (za 1M tokenów)Koszt wyjścia (za 1M tokenów)Najlepsze zastosowanieDokładność przy złożonych schematachSzybkość
Gemini 2.5 Flash Lite~$0.025~$0.10Proste, płaskie dane, duża skala⚠️ Ma problemy ze zagnieżdżonymi / opcjonalnymi polamiNajszybszy
Gemini 2.5 Flash~$0.075~$0.625Większość zadań scrapingu✅ Dobra do uporządkowanej ekstrakcjiSzybki
Gemini 2.5 Pro~$0.3125~$2.50Złożone zagnieżdżone schematy, przypadki brzegowe✅ Najlepsza dokładnośćNajwolniejszy

(Cennik z Gemini Developer API. Batch API ma 50% zniżki względem tych stawek.)

Gemini 2.5 Flash Lite: Szybki i tani, ale uważaj na braki

Flash Lite to opcja budżetowa. Świetnie działa przy prostych, płaskich danych — nazwy produktów, ceny, listy jednopoziomowe — na dużą skalę. Ma jednak dobrze udokumentowane problemy z polami opcjonalnymi, znacznikami czasu i danymi zagnieżdżonymi. Jeden z developerów na forum Google zgłosił, że Flash Lite „wariuje”, gdy schemat zawiera niewymagane właściwości, generując powtarzalny tekst aż do limitu tokenów. Jeśli Twój schemat ma więcej niż dwa poziomy zagnieżdżenia albo pola, których może nie być na części stron, Flash Lite szybko spali tokeny i Twoją cierpliwość.

Gemini 2.5 Flash: Złoty środek dla większości zadań scrapingu

Flash to model, od którego zacząłbym przy prawie każdym realnym zadaniu scrapingu. Dobrze radzi sobie z ekstrakcją uporządkowanych danych, obsługuje logikę paginacji i kosztuje około 3× więcej niż Flash Lite na wejściu — ale skok jakości zwykle to rekompensuje. W benchmarkach na poziomie GPQA Flash jest bardzo blisko Pro, co oznacza, że dobrze radzi sobie z wnioskowaniem, normalizacją i spłaszczaniem danych, czyli dokładnie tym, czego scraping potrzebuje.

Gemini 2.5 Pro: Maksymalna dokładność dla złożonych danych

Pro to narzędzie precyzyjne. Używaj go, gdy wyciągasz głęboko zagnieżdżone schematy (np. specyfikacje produktów z wieloma grupami wariantów, a w każdej rozmiary, kolory i ceny) albo gdy nie można zaakceptować zmyślonych pól (dane prawne, finansowe, medyczne). Jest około 12× droższy na wejściu niż Flash Lite, więc rezerwuj go do zadań, w których dokładność liczy się bardziej niż cena.

Przykład kosztów: 10 000 stron produktów

Zakładając, że przetwarzasz HTML do Markdowna (a powinieneś — więcej o tym za chwilę), typowa strona produktu spada z ok. 20 000 tokenów surowego HTML do ok. 4 000 tokenów Markdowna. JSON wyjściowy to około 500 tokenów na stronę.

ModelKoszt wejścia (40M tokenów)Koszt wyjścia (5M tokenów)Łącznie dla 10K stron
Flash Lite$1.00$0.50~$1.50
Flash$3.00$3.13~$6.13
Pro$12.50$12.50~$25.00

Bez wstępnego przetwarzania do Markdowna (surowy HTML, ok. 200M tokenów wejściowych) te liczby rosną 4–5×. Preprocessing to pojedyncza optymalizacja o największym wpływie w całym pipeline.

Kod czy No-Code: Dwie ścieżki do Gemini Web Scraping

Tu rozchodzą się drogi. Jeśli jesteś developerem i budujesz własny pipeline, ścieżka Python + Gemini API daje maksymalną kontrolę. Jeśli jesteś użytkownikiem biznesowym i potrzebujesz danych teraz, bez terminala, no-code AI scraper da Ci to szybciej.

KryteriumGemini API (Python)Thunderbit (No-Code)
Czas konfiguracji15–30 min (środowisko, klucze, biblioteki)< 1 min (instalacja rozszerzenia Chrome)
Wymaga kodowaniaTak (Python, Pydantic)Nie
Obsługa paginacjiRęczne skryptyWbudowana (kliknięcie lub infinite scroll)
Wzbogacanie podstronWłasny kod dla każdej witryny1 kliknięcie „Scrape Subpages”
Zarządzanie kosztami tokenówRęcznie (czyszczenie HTML, wybór modelu)Obsługiwane przez silnik AI
Opcje eksportuJSON/CSV przez skryptExcel, Google Sheets, Airtable, Notion
Najlepsze dlaDeveloperów budujących własne pipeline’yUżytkowników biznesowych, którzy potrzebują danych od razu

Thunderbit to opcja no-code, którą stworzyliśmy w Thunderbit — rozszerzenie Chrome wykorzystujące AI (w tym Gemini, ChatGPT, Claude i inne modele pod spodem), aby podpowiadać pola, scrapować w dwóch kliknięciach i eksportować do wybranego narzędzia. Poniżej pokażę obie ścieżki.

Dla osób pracujących „od arkusza” warto też znać Quadratic — to arkusz AI, który potrafi uruchamiać scraping oparty na Gemini bezpośrednio w samym arkuszu. Ale w workflow zaczynających się od konkretnej strony internetowej (listy produktów, katalogi, bazy leadów) Thunderbit lepiej odpowiada sposobowi myślenia użytkownika.

Gemini Web Scraping krok po kroku z Pythonem

Ta część jest dla developerów. Jeśli chcesz ścieżkę no-code, przejdź dalej.

Zanim zaczniesz:

  • Poziom trudności: średni (wymagana znajomość Pythona)
  • Czas: ok. 20–30 minut na pierwszy scraping
  • Potrzebne: Python 3.10+, konto Google AI Studio (darmowe), docelowy URL

Krok 1: Skonfiguruj środowisko Pythona i klucz API Gemini

Utwórz folder projektu i środowisko wirtualne, a potem zainstaluj wymagane biblioteki:

mkdir gemini-scraper && cd gemini-scraper
python -m venv venv && source venv/bin/activate
pip install -U google-genai requests beautifulsoup4 markdownify pydantic

Ważne: jedynym właściwym SDK w 2026 roku jest google-genai. Starszy pakiet google-generativeai zakończył wsparcie 2025-11-30 i jest już przestarzały. Jeśli w poradniku widzisz import google.generativeai as genai, ten kod jest nieaktualny.

Następnie pobierz klucz API z Google AI Studio. Kliknij „Get API Key”, utwórz nowy klucz i zapisz go jako zmienną środowiskową:

export GEMINI_API_KEY="twój-klucz-tutaj"

Powinieneś teraz mieć działające środowisko Pythona z zainstalowanymi zależnościami i gotowym kluczem API.

Krok 2: Pobierz HTML docelowej strony

Użyj requests, aby pobrać stronę. W tym przykładzie zeskrobimy stronę 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

Jeśli strona mocno polega na renderowaniu JavaScript albo ma zabezpieczenia anty-botowe, requests.get() może zwrócić pustą powłokę albo błąd 403. Obejścia omówimy w sekcji o ograniczeniach — ale na wielu publicznych stronach to działa bez problemu.

Krok 3: Oczyść HTML i zamień go na Markdown

To krok, o którym większość poradników wspomina, ale go nie wyjaśnia. Surowy HTML typowej strony produktu ma około 20 000 tokenów. Po odfiltrowaniu w BeautifulSoup i konwersji do Markdowna zostaje mniej więcej 765–4 000 tokenów — redukcja o 5–10×, która realnie obniża koszty i zmniejsza ryzyko halucynacji.

from bs4 import BeautifulSoup
from markdownify import markdownify

soup = BeautifulSoup(html, "html.parser")
main = soup.select_one("main") or soup  # pobierz tylko główną treść
markdown_content = markdownify(str(main))

Wywołanie select_one("main") usuwa nagłówki, stopki, menu i skrypty — cały szum, który marnuje tokeny i myli model. Jeśli strona nie używa tagu <main>, spróbuj .product-detail, #content albo innego kontenera z właściwymi danymi.

Po tym kroku powinieneś mieć czysty string Markdown zawierający tylko sensowną treść strony.

Krok 4: Zdefiniuj schemat danych i wyślij je do Gemini

Użyj Pydantic, aby określić, co chcesz dostać. SDK google-genai przyjmuje model Pydantic BaseModel bezpośrednio 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()  # odczytuje GEMINI_API_KEY ze zmiennej środowiskowej

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=f"Wyciągnij dane produktu z tej strony:\n\n{markdown_content}",
    config=types.GenerateContentConfig(
        response_mime_type="application/json",
        response_schema=Product,
    ),
)

product = response.parsed
print(product)

Kilka pułapek z udokumentowanego rejestru błędów:

  • Nie używaj Field(default=...) w schematach wysyłanych do Gemini — API zwraca ValueError. Na poziomie typu użyj raczej sku: str | None = None.
  • Trzymaj zagnieżdżenie płytkie (maksymalnie 3 poziomy). Głęboko zagnieżdżone schematy powodują w Flash i Flash Lite rekurencyjne wyjście albo niezamknięte nawiasy.
  • Oznacz pola jako wymagane przy Flash Lite i używaj pustych wartości zamiast pomijania — obsługa pól opcjonalnych w Flash Lite jest niewiarygodna.

Powinieneś teraz mieć sparsowany obiekt Product z uporządkowanymi danymi ze strony.

Krok 5: Wyeksportuj i zapisz zeskrobane dane

Zapisz wynik jako JSON albo CSV:

import json

with open("products.json", "w") as f:
    json.dump(product.model_dump(), f, indent=2)

Jeśli chcesz przesłać dane do Google Sheets, możesz użyć biblioteki gspread. W przypadku baz danych serializuj wynik do wybranego ORM-u. Ustrukturyzowane wyjście z Gemini jest na tyle czyste, że zwykle można je od razu przekazać do kolejnych narzędzi.

Gemini Web Scraping bez kodu (z Thunderbit)

To ścieżka dla użytkowników biznesowych — albo dla developerów, którzy nie chcą pisać jednorazowych skryptów do scrapingu.

Zanim zaczniesz:

  • Poziom trudności: początkujący
  • Czas: ok. 5 minut do pierwszego scrapa
  • Potrzebne: przeglądarka Chrome, rozszerzenie Thunderbit (działa darmowy plan)

Krok 1: Zainstaluj rozszerzenie Thunderbit do Chrome

Wejdź do Chrome Web Store i kliknij „Add to Chrome”. Zarejestruj się e-mailem — cały proces trwa mniej niż minutę. Porównaj to z 15–30 minutami konfiguracji Pythona powyżej.

Krok 2: Otwórz docelową stronę i kliknij „AI Suggest Fields”

Przejdź do strony, którą chcesz scrapować — może to być katalog produktów, lista nieruchomości, baza leadów, cokolwiek. Kliknij ikonę Thunderbit na pasku narzędzi przeglądarki, a potem wybierz „AI Suggest Fields.”

AI w Thunderbit odczytuje stronę i automatycznie proponuje nazwy kolumn oraz typy danych — na przykład „Product Name”, „Price”, „Rating”, „Image URL”. Możesz zmienić nazwy kolumn, usunąć pola, których nie potrzebujesz, albo dodać własne prompty AI dla pojedynczych kolumn (np. „skategoryzuj jako High/Medium/Low” albo „przetłumacz na angielski”).

Zanim zeskrobiesz pierwszy wiersz, zobaczysz podgląd tabeli z ustawionymi kolumnami.

Krok 3: Kliknij „Scrape” i sprawdź wyniki

Jedno kliknięcie. Thunderbit obsługuje paginację — zarówno przyciski „Next”, jak i infinite scroll — i wyciąga dane do uporządkowanej tabeli. Możesz wybrać między:

  • Cloud Scraping: szybsze, przetwarza do 50 stron jednocześnie. Działa na publicznych witrynach.
  • Browser Scraping: działa w zalogowanej karcie przeglądarki. Używaj tego na stronach wymagających uwierzytelnienia (CRM-y, katalogi za logowaniem, narzędzia wewnętrzne).

Wyniki pojawiają się w tabeli bezpośrednio w panelu bocznym rozszerzenia. Przed eksportem sprawdź, czy nie ma oczywistych błędów.

Krok 4: Wyeksportuj do Excel, Google Sheets, Airtable albo Notion

Kliknij przycisk eksportu i wybierz format. Thunderbit eksportuje do Excel, Google Sheets, Airtable i Notion — bez opłat i bez paywalla. Pola obrazów są przesyłane bezpośrednio do bibliotek obrazów Notion i Airtable, co jest bardzo wygodne przy scrapowaniu zdjęć produktów albo fotografii profilowych.

Bez parsowania JSON-a. Bez skryptów. Dane są od razu gotowe do użycia.

Scraping wielu stron i podstron z Gemini

Większość poradników kończy się po jednym URL-u. Prawdziwe zadania scrapingowe nie.

Scraping 500 stron produktów z paginacją i podstronami szczegółów to już pełnoprawna robota — a przeskok między demem na jednym URL-u a tą rzeczywistością jest ogromny.

Obsługa paginacji w Gemini API (podejście kodowe)

Dla URL-i z numeracją stron (najczęstszy wzorzec) zrób pętlę po stronach aż do pustego wyniku:

import time

all_products = []
for page in range(1, 101):  # do 100 stron
    url = f"https://example.com/products?page={page}"
    md = fetch_clean(url)  # Twoja funkcja HTML→Markdown z wcześniejszego kroku
    
    response = client.models.generate_content(
        model="gemini-2.5-flash-lite",  # tani wybór dla stron list
        contents=f"Wyciągnij nazwy produktów i URL-e:\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)  # respektuj limity darmowego tieru

W przypadku stron opartych na cursorze lub infinite scroll trzeba przechwycić endpoint XHR, z którego korzysta frontend (sprawdź kartę Network w przeglądarce), i pętlą odpytywać bezpośrednio ten endpoint. To tańsze niż ponowne renderowanie, a przez Gemini przepuszczasz tylko te elementy, które faktycznie wymagają oczyszczenia przez LLM.

Pilnuj tu kosztów tokenów — każda strona mnoży rachunek. Do prostych list używaj Flash Lite, a do ekstrakcji szczegółów przechodź na Flash.

Scraping podstron dla bogatszych danych (podejście kodowe)

Klasyczny model dwuetapowy: etap 1 zeskrobuje stronę listy z URL-ami, etap 2 odwiedza każdą stronę szczegółów i pobiera bogatsze dane.

# Etap 1: zbierz URL-e tanim Flash Lite
class Listing(BaseModel):
    product_urls: list[str]

listing = client.models.generate_content(
    model="gemini-2.5-flash-lite",
    contents=f"Wyciągnij URL-e produktów:\n{listing_md}",
    config=types.GenerateContentConfig(
        response_mime_type="application/json",
        response_schema=Listing,
    ),
).parsed

# Etap 2: wyciągnij szczegóły z 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"Wyciągnij szczegóły produktu:\n{md}",
        config=types.GenerateContentConfig(
            response_mime_type="application/json",
            response_schema=ProductDetail,
        ),
    ).parsed
    # zapisz szczegóły...
    time.sleep(0.5)

To działa, ale wymaga sporo „klejenia”: deduplikacji URL-i, obsługi błędów, limitowania zapytań, logiki retry, cache’owania surowego HTML, żeby zmiana schematu nie wymuszała ponownego pobierania. Dla 50 stron jest to jeszcze do ogarnięcia. Dla 5 000 — budujesz już infrastrukturę.

Alternatywa no-code: wbudowana paginacja i scraping podstron w Thunderbit

Thunderbit automatycznie obsługuje paginację klikaniem i infinite scroll — bez pisania pętli. Do wzbogacania danych z podstron funkcja „Scrape Subpages” odwiedza każdą stronę szczegółów linkowaną z listy i uzupełnia oryginalną tabelę o głębsze pola. Jedno kliknięcie, nie jeden skrypt.

Tryb Cloud Scraping przetwarza do 50 stron jednocześnie, co robi ogromną różnicę przy scrapowaniu katalogów produktów albo ofert nieruchomości na dużą skalę. Dla każdego, kto nie chce zarządzać pętlami Pythona i retry logic, to najpraktyczniejszy wybór. (Więcej o scrapowaniu danych ze stron do Excela znajdziesz w osobnym poradniku.)

Scraping ze zrzutu ekranu: multimodalny skrót Gemini

Jest jeszcze jedno podejście, które większość poradników całkowicie pomija: wysłanie do API vision Gemini zrzutu ekranu strony zamiast surowego HTML-a. Jeden z developerów zauważył, że pojedynczy screenshot kosztuje tylko ok. 258 tokenów — w porównaniu z tysiącami nawet przy oczyszczonym Markdownie. Dla prostych ekstrakcji to ogromna różnica kosztów.

Jak używać Gemini Vision API do web scrapingu

Zrób zrzut ekranu w Playwright, zakoduj go i wyślij 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)  # tylko widoczna część

client = genai.Client()
resp = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=[
        {"inline_data": {"mime_type": "image/png", "data": png_bytes}},
        "Wyciągnij tytuł produktu i cenę jako JSON.",
    ],
    config=types.GenerateContentConfig(
        response_mime_type="application/json",
        response_schema=Product,
    ),
)
print(resp.parsed)

Według dokumentacji Google o tokenach dla obrazów, obraz, w którym oba wymiary mają nie więcej niż 384 piksele, kosztuje 258 tokenów. Większe obrazy są dzielone na kafelki 768×768 po 258 tokenów każdy. Krótki screenshot „above the fold” (258–1 600 tokenów) wygrywa z surowym HTML-em bez większego problemu — ale bardzo wysoki pełnostronicowy screenshot (~5 000 tokenów) może już przegrać z czystym Markdownem (~765–1 200 tokenów).

Ograniczenia scrapingu ze zrzutów ekranu

  • Niższa precyzja przy gęstych tabelach: układy wielokolumnowe, małe fonty i nachodzące na siebie elementy powodują częściowe odczyty — nie halucynacje, tylko pominięte etykiety i źle przypisane nagłówki.
  • Brak możliwości klikania linków: vision zwraca tekst, a nie klikalne odnośniki. Brak paginacji, brak wzbogacania podstron.
  • Limit rozdzielczości: tekst mniejszy niż ok. 10 px bywa często odczytywany błędnie. Google zmniejsza obraz do ok. 1 568 px na dłuższym boku.
  • Koszt przechwycenia: uruchomienie Playwright + czekanie na networkidle zajmuje 2–5 sekund na stronę, co przy skali robi różnicę.

Scraping ze screenshotów świetnie sprawdza się na stronach mocno opartych o JS, stronach blokujących boty (gdy requests.get() zwraca 403, ale przeglądarka renderuje stronę poprawnie) oraz stronach z danymi osadzonymi w wykresach lub obrazach. Przy długich, tekstowych stronach Markdown nadal jest lepszym wyborem.

Scraping obrazów i PDF-ów w Thunderbit korzysta z podobnego podejścia vision AI — wrzucasz obraz albo PDF i dostajesz uporządkowaną tabelę, bez pisania skryptów do screenów ani obsługi base64. (Zobacz też: jak zamienić obrazy na Excel.)

Kiedy Gemini Web Scraping zawodzi (i co zrobić zamiast tego)

Gemini to silnik ekstrakcji, nie pobierania stron. Jeśli nie dostarczysz treści strony do Gemini, nie pomoże. Kropka.

Istnieje kilka typowych sytuacji, w których całe podejście się sypie, a większość poradników traktuje je po macoszemu. Wolę mówić wprost.

OgraniczenieCo się dziejeJak temu zaradzić
Anti-bot / CloudflareZapytania API są blokowane; requests.get() zwraca 403 lub stronę z challengeUżyj proxy z rotacją fingerprintu TLS albo narzędzi opartych na przeglądarce (tryb Browser Scraping w Thunderbit korzysta z Twojej zalogowanej sesji)
Limity okna tokenówDuże strony przekraczają praktycznie użyteczny kontekst (~200K–300K dla wiarygodnej ekstrakcji, mimo że technicznie wspierany jest 1M)Oczyść HTML do Markdowna, podziel stronę albo użyj screenshotów
Halucynacje przy treściach wizualnychGemini zgaduje na podstawie alt textu lub podpisów zamiast rzeczywistej zawartości obrazuWaliduj wyniki; do danych z obrazów używaj wprost API vision; dodaj walidatory grounding
Limity rate APIPrzy skali pojawiają się throttlingi — darmowy tier to ok. 100 RPD dla Pro i 1 000 RPD dla Flash LiteKolejkowanie, batchowanie (50% zniżki) albo gotowe narzędzia
Niespójna ekstrakcja (modele Lite)Pola opcjonalne, znaczniki czasu i dane zagnieżdżone są pomijane albo zmyślanePrzejdź na Flash/Pro albo dodaj ostrzejsze ograniczenia schematu
Chronione serwisy (LinkedIn itd.)Pojawiają się błędy albo puste daneScraping w przeglądarce z aktywną sesją (Thunderbit to obsługuje); przestrzegaj ToS

Kilka z tych punktów wymaga dodatkowego kontekstu.

Anti-bot jest dziś aktywnie świadomy LLM-ów. Cloudflare blokuje boty AI domyślnie od lipca 2025, a w pierwszych pięciu miesiącach zablokowano 416 miliardów żądań botów AI. Datadome dodało w 2025 wykrywanie specyficzne dla LLM-ów i zauważyło czterokrotny wzrost ruchu botów LLM. Zwykłe requests.get() + Gemini praktycznie nie działa na stronach chronionych przez Datadome. Problemem jest fingerprint, nie IP — samo rotowanie adresów IP nic nie da, jeśli fingerprint TLS krzyczy „Python requests”.

Halucynacje są subtelne. LLM-y trenowane do bycia pomocnymi wolą uzupełnić pola opcjonalne wiarygodnie brzmiącą fikcją niż zwrócić null. Widziałem modele zgadujące markę produktu na podstawie slug-a URL-a, wnioskujące walutę z TLD i wpisujące realistycznie brzmiącą, ale fałszywą liczbę recenzji na podstawie skeleton loaderów. Warstwa ochronna: restrykcyjne schematy Pydantic, pętle retry z informacją zwrotną z walidacji, walidatory grounding sprawdzające, czy wyciągnięte wartości faktycznie występują w źródłowym HTML-u, oraz dwufazowa ekstrakcja (Flash wyciąga, Pro waliduje próbkę).

Okno kontekstu 1M nie jest użyteczne przy 1M. Badania Chroma i innych pokazują, że jakość rozumowania spada dużo wcześniej niż przy samym limicie tokenów. Traktuj około 200K–300K tokenów jako praktyczny sufit dla uporządkowanej ekstrakcji.

Drzewo decyzji: którego narzędzia użyć?

  • Niska skala + proste strony + developer → darmowy tier Gemini API + Python
  • Średnia skala + złożone schematy + developer → płatny Gemini 2.5 Flash + Python + structured outputs + preprocessing
  • Dowolna skala + osoba nietechniczna + logowanie lub ciężka paginacjaThunderbit
  • Bardzo duża skala + mocne anti-bot + misja krytyczna → zarządzana infrastruktura scrapingowa (proxy) + Gemini jako warstwa ekstrakcji

Gemini Web Scraping: wskazówki, jak oszczędzić czas i pieniądze

Niezależnie od tego, czy piszesz w Pythonie, czy klikasz w interfejsie, te wskazówki oszczędzą Ci sporo nerwów.

  1. Zawsze zamieniaj HTML na Markdown przed wysłaniem do Gemini. 5–10× oszczędności tokenów to standard; 95% jest możliwe, jeśli dodatkowo przytniesz treść w BeautifulSoup.
  2. Używaj tylko google-genai. Nie korzystaj z przestarzałego pakietu google-generativeai — wsparcie się skończyło.
  3. Zaczynaj od Flash Lite tylko przy płaskich schematach. Przejdź na Flash w momencie, gdy pojawi się zagnieżdżenie albo pola opcjonalne.
  4. Unikaj Field(default=...) w schematach Pydantic wysyłanych do Gemini. Na poziomie typu używaj raczej sku: str | None = None.
  5. Pydantic + response_schema to kluczowy element całego rozwiązania — to jednocześnie kontrakt i bariera przeciw halucynacjom.
  6. Używaj Batch API przy zadaniach powyżej 1 000 stron — 50% zniżki i brak wpływu na bieżący RPM.
  7. Ręcznie sprawdź losową próbkę 10–50 wierszy przed skalowaniem nowego ekstraktora. Dryf dokładności jest niewidoczny, dopóki go nie zobaczysz.
  8. Cache’uj surowy HTML na dysku — zmiana schematu nie powinna wymagać ponownego pobierania stron.
  9. Zapisuj źródłowy URL przy każdym wierszu — dzięki temu można ponownie zeskrobać pojedyncze strony bez uruchamiania całego procesu od nowa.
  10. Dla użytkowników no-code: korzystaj z własnych promptów AI dla każdej kolumny w Thunderbit — przenieś prompt engineering na poziom arkusza, tłumacz, kategoryzuj i podsumowuj na poziomie kolumn.

I jeszcze jedno: nie wdrażaj darmowego tieru na produkcję. Limity zostały obniżone o 50–80% w grudniu 2025 i mogą zostać obcięte ponownie bez ostrzeżenia.

Podsumowanie

Dystans między prostym demem Gemini na jednym URL-u a produkcyjnym pipeline’em jest większy, niż większość poradników sugeruje.

Ścieżka Python + Gemini API daje developerom pełną kontrolę nad wyborem modelu, preprocessingiem, paginacją i projektowaniem schematu. Ścieżka no-code — narzędzia takie jak Thunderbit — daje użytkownikom biznesowym tę samą uporządkowaną ekstrakcję danych bez dotykania terminala.

Co warto zapamiętać:

  • Wybór modelu ma znaczenie. Flash Lite do skali, Flash do balansu, Pro do złożoności. Nie wybieraj najtańszej opcji, a potem nie dziw się, że dane są błędne.
  • Scraping wielu stron i podstron to miejsce, w którym poradniki się kończą — i tam właśnie zaczyna się prawdziwa robota. Obie opisane tu ścieżki rozwiązują ten problem.
  • Uczciwe ograniczenia oszczędzają czas. Jeśli strona blokuje zapytania API, żaden prompt engineering nie pomoże. Wybierz właściwe narzędzie do zadania, nie najmodniejsze.
  • Konwersja HTML do Markdowna to najważniejsza optymalizacja — obniża koszty o ponad 75% i zmniejsza liczbę halucynacji.

Jeśli chcesz przetestować ścieżkę no-code, darmowy plan Thunderbit pozwoli Ci zeskrobać kilka stron i zobaczyć wynik na własne oczy. Jeśli wolisz kod, darmowy tier Gemini API wystarczy, żeby zbudować prototyp pipeline’u w jedno popołudnie. W obu przypadkach szybciej uzyskasz uporządkowane dane, niż kiedykolwiek dało się to zrobić przez kopiuj-wklej. Więcej o ekstrakcji danych ze stron do Excela albo najlepszych AI web scraperach znajdziesz na naszym blogu.

Wypróbuj Thunderbit do AI Web Scrapingu Get Started Free

FAQ

Ile kosztuje używanie Gemini do web scrapingu?

Gemini API ma darmowy tier z około 100 requestami dziennie dla Pro, 500 dla Flash i 1 000 dla Flash Lite (stan na początek 2026 roku — limity zostały obniżone w grudniu 2025). Na płatnym tierze zeskrobanie 10 000 stron produktów kosztuje około 1,50 USD z Flash Lite, 6 USD z Flash albo 25 USD z Pro — przy założeniu, że najpierw zamieniasz HTML na Markdown. Bez preprocessing koszt rośnie 4–5×. Batch API oferuje 50% zniżki dla zadań niewymagających działania w czasie rzeczywistym.

Czy Gemini potrafi scrapować strony wymagające logowania?

Samo API Gemini nie loguje się do stron — przetwarza tylko treść, którą mu wyślesz. Musisz sam pobrać HTML ze swojej uwierzytelnionej sesji (np. za pomocą headless browsera i zapisanych ciasteczek). Tryb Browser Scraping w Thunderbit robi to natywnie: działa w zalogowanej karcie Chrome, więc każdą stronę widoczną w przeglądarce Thunderbit może zeskrobać.

Czy web scraping z Gemini jest legalny?

Legalność zależy od regulaminu strony, rodzaju danych i jurysdykcji. W USA, po sprawach hiQ v. LinkedIn i Meta v. Bright Data, scraping publicznie dostępnych danych bez logowania jest zwykle uznawany za dopuszczalny — ale każdy przypadek zależy od konkretów. Scraping za loginem wiąże się z większym ryzykiem prawnym. Dane osobowe mieszkańców UE podlegają GDPR niezależnie od tego, czy strona jest publiczna. Zawsze respektuj robots.txt i regulamin strony oraz nie scrapuj danych osobowych bez podstawy prawnej.

Czy mogę używać Gemini do scrapowania dynamicznych stron opartych na JavaScript?

Tak, ale najpierw trzeba wyrenderować JavaScript — albo za pomocą headless browsera (Playwright, Puppeteer), albo przez przechwycenie endpointów API, z których korzysta strona. Gdy masz już wyrenderowany HTML, oczyść go i wyślij do Gemini jak zwykle. Alternatywnie scraping ze screenshotów z użyciem vision API Gemini omija renderowanie JS całkowicie — jeśli strona renderuje się w przeglądarce, Gemini też ją zobaczy. Thunderbit automatycznie obsługuje strony renderowane przez JS zarówno w trybie Cloud, jak i Browser Scraping.

Jaka jest różnica między użyciem Gemini do scrapingu a dedykowanym narzędziem, takim jak Thunderbit?

Gemini to silnik ekstrakcji — interpretuje treść i zwraca uporządkowane dane. Nie odwiedza stron, nie obsługuje paginacji, nie zarządza uwierzytelnianiem ani eksportem do arkuszy. Nadal potrzebujesz narzędzia, które dostarczy treść strony do Gemini, i czegoś, co zrobi pożytek z wyniku. Dedykowane narzędzia, takie jak Thunderbit, łączą pobieranie, renderowanie, ekstrakcję AI, paginację, wzbogacanie podstron i eksport w jednym pakiecie — bez dodatkowego „klejenia”.

Dowiedz się więcej

Shuai Guan
Shuai Guan
CEO w Thunderbit | Ekspert ds. automatyzacji danych AI Shuai Guan jest CEO Thunderbit oraz absolwentem wydziału inżynierii University of Michigan. Czerpiąc z niemal dekady doświadczenia w branży technologicznej i architekturze SaaS, specjalizuje się w przekuwaniu złożonych modeli AI w praktyczne, niewymagające kodowania narzędzia do استخراج danych. Na tym blogu dzieli się szczerymi, sprawdzonymi w boju spostrzeżeniami na temat web scrapingu i strategii automatyzacji, które pomogą Ci tworzyć mądrzejsze, oparte na danych procesy pracy. Gdy nie optymalizuje przepływów danych, z tą samą dbałością o szczegóły oddaje się swojej pasji do fotografii.

Wypróbuj Thunderbit

Zbieraj leady i inne dane w zaledwie 2 kliknięcia. Wspierane przez AI.

Pobierz Thunderbit To darmowe
Wyciągaj dane z użyciem AI
Łatwo przenoś dane do Google Sheets, Airtable lub Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week