W zeszłym tygodniu kolega z naszego działu sprzedaży poprosił mnie o pomoc w wyciągnięciu danych kontaktowych z około 200 stron katalogów firm. Jego plan? Ręcznie kopiować i wklejać każdą z nich do arkusza kalkulacyjnego. Zasugerowałem, żeby spróbował użyć ChatGPT do wygenerowania skryptu Pythona do scrapingu. Dwadzieścia minut później miał już gotowy skrypt. Trzydzieści minut później napisał do mnie na DM: „Zadziałało na pierwszych pięciu stronach, a potem po prostu… przestało.”
To doświadczenie jest zaskakująco powszechne. ChatGPT naprawdę świetnie pisze kod do scrapingu — dopóki przestaje. Większość poradników w internecie kończy się na etapie „patrz, działa na tej zabawkowej stronie”, zostawiając Cię samego, gdy tylko trafiasz na prawdziwą stronę z JavaScriptem, zabezpieczeniami antybotowymi albo paginacją. W tym przewodniku pokażę Ci, jak w praktyce wygląda ChatGPT web scraping: cały workflow, pięć gotowych do ponownego użycia szablonów promptów (nie tylko jeden przykład), uczciwy przegląd miejsc, w których wszystko się sypie, oraz co zrobić, gdy tak się stanie — w tym bezkodowe alternatywy, takie jak Thunderbit, które pomijają kod całkowicie.
Czym jest ChatGPT web scraping?
„ChatGPT web scraping” oznacza wykorzystywanie ChatGPT do pomocy w pobieraniu danych ze stron internetowych. Jest jednak jedna kluczowa różnica, którą większość osób pomija: ChatGPT sam nie scrapuje stron. Nie potrafi wejść na URL, pobrać HTML-a ani klikać po kolejnych podstronach. To, co potrafi, to wygenerować kod (zwykle w Pythonie), który robi te rzeczy, albo przeanalizować surowy HTML wklejony do czatu i zwrócić uporządkowane dane.
Są dwa główne podejścia:
- ChatGPT jako generator kodu: opisujesz stronę i dane, których potrzebujesz, a ChatGPT pisze skrypt Pythona (zwykle z BeautifulSoup, Selenium lub Playwright), który uruchamiasz na własnym komputerze.
- ChatGPT jako parser danych: kopiujesz surowy HTML do czatu (albo przesyłasz go przez Code Interpreter), a ChatGPT wyciąga potrzebne pola do formatu JSON lub CSV.
W obu przypadkach to Ty wykonujesz pobieranie i uruchamianie. ChatGPT jest mózgiem, nie rękami. Nawet nowsza przeglądarka ChatGPT Atlas (uruchomiona w październiku 2025) pozwala przeglądać sieć w trybie konwersacyjnym, ale zwraca odpowiedzi — nie uporządkowane tabele CSV z 500 wierszami produktów. To asystent do przeglądania, a nie pipeline do ekstrakcji danych.
Po co używać ChatGPT do web scrapingu i dla kogo to jest?
ChatGPT dramatycznie obniża próg wejścia do web scrapingu. Według 2025 Stack Overflow Developer Survey, 84% programistów korzysta już z narzędzi AI albo planuje to robić, a ChatGPT prowadzi w stawce z udziałem 82%. Ale odbiorcami „ChatGPT web scraping” nie są tylko deweloperzy. To także SDR-y budujące listy prospectów, managerowie e-commerce śledzący ceny konkurencji, analitycy nieruchomości pobierający dane ofertowe i zespoły marketingowe agregujące treści.
Poniżej szybki przegląd popularnych zastosowań i tego, kto na nich korzysta:
| Przypadek użycia | Kto korzysta | Co scrapujesz |
|---|---|---|
| Pozyskiwanie leadów sprzedażowych | SDR, sales ops | Imiona, e-maile, numery telefonów z katalogów |
| Monitorowanie cen konkurencji | E-commerce, zespoły pricingowe | Nazwy produktów, ceny, dostępność, SKU |
| Badanie rynku | Analitycy, founderzy | Dane firmowe, recenzje, oceny, listy funkcji |
| Zbieranie danych o nieruchomościach | Agenci, inwestorzy | Ceny, adresy, liczba sypialni/łazienek, dane agenta |
| Agregacja treści | Marketing, SEO | Tytuły artykułów, URL-e, daty publikacji, autorzy |
Ręczne kopiowanie danych ze 100 stron może zająć 3–5 godzin. Skrypt wygenerowany przez ChatGPT może zrobić to samo w kilka minut — jeśli zadziała. I właśnie to „jeśli” jest sednem tego artykułu.
Gartner prognozuje, że do 2026 roku programiści spoza formalnych działów IT będą odpowiadać za co najmniej 80% użytkowników narzędzi low-code. Osoby wyszukujące hasło „ChatGPT web scraping” to coraz częściej nieprogramiści, którzy chcą dostać dane bez zatrudniania inżyniera. Dla nich ChatGPT jest pierwszym przystankiem — a narzędzia takie jak Thunderbit wchodzą do gry wtedy, gdy skrypt odmawia posłuszeństwa.
Jak działa ChatGPT web scraping: przewodnik krok po kroku
Oto pełny workflow od początku do końca, na przykładzie strony katalogu firm — nie zabawkowej strony.
- Poziom trudności: średni (musisz swobodnie uruchamiać Pythona)
- Czas potrzebny: około 15–30 minut na pierwszy scraping
- Czego potrzebujesz: przeglądarki Chrome, środowiska Python (Python 3.10+), ChatGPT (wystarczy darmowy plan) i docelowego URL-a
Krok 1: Przeanalizuj stronę i określ dane, których potrzebujesz
Otwórz stronę, którą chcesz scrapować, w Chrome. Kliknij prawym przyciskiem myszy na dane, które chcesz pobrać (np. nazwę firmy) i wybierz Inspect. Otworzy się Chrome DevTools i podświetli odpowiedni element HTML.
Zwróć uwagę na selektory CSS — takie jak h2.business-name, span.phone czy a.website-link. Im bardziej precyzyjne selektory, tym lepszy będzie wynik od ChatGPT. Skopiuj reprezentatywny fragment HTML-a (jedną „kartę” albo „wiersz” danych), żeby wkleić go do promptu.
Powinieneś teraz mieć krótką listę nazw pól (np. business_name, phone, website_url) oraz odpowiadających im selektorów CSS.
Krok 2: Napisz szczegółowy prompt do ChatGPT
Tutaj większość poradników zawodzi — podają ogólny prompt i liczą na cud. Dobry prompt do scrapingu zawiera sześć elementów:
- Język i biblioteka: „Napisz skrypt w Pythonie 3.11 z użyciem BeautifulSoup 4.”
- Docelowy URL: dokładna strona do scrapowania.
- Selektory CSS: dla każdego pola selektor znaleziony w kroku 1.
- Format wyjściowy: CSV, JSON albo oba.
- Instrukcje specjalne: kodowanie, obsługa błędów, opóźnienia.
- Fragment HTML: wklej 20–40 linii rzeczywistego HTML-a strony, żeby ChatGPT widział strukturę.
Oto przykładowy prompt (z komentarzem):
Jesteś seniorem inżynierii Pythona. Napisz scraper webowy w Pythonie 3.11 z użyciem BeautifulSoup 4.
Docelowy URL: https://example.com/businesses
Cel: wyciągnij każdą kartę firmy na stronie i zwróć jeden wiersz na jedną firmę.
Potrzebne pola (selektory CSS w nawiasach):
- business_name (h2.biz-name)
- phone (span.phone-number)
- website_url (a.biz-link, href)
- rating (div.stars[data-rating])
Wyjście: zapisz do businesses.csv z kodowaniem UTF-8 i wierszem nagłówka.
Wymagania:
- użyj requests z realistycznym nagłówkiem User-Agent
- obsłuż brakujące pola bez błędu (None zamiast crashu)
- na końcu wypisz liczbę wyekstrahowanych firm
- dodaj 1-sekundowe opóźnienie między żądaniami, jeśli używasz pętli
Poniżej jest reprezentatywny fragment HTML z tej strony (jedna karta firmy):
<WKLEJ 20-40 LINII PRAWDZIWEGO HTML-A TUTAJ>
Wskazówka: dołączenie fragmentu HTML-a to pojedyncza rzecz, która najbardziej poprawia trafność. ChatGPT nie może wejść na URL, więc ten fragment to jego jedyne źródło prawdy.
Krok 3: Sprawdź i przetestuj wygenerowany kod
Nie uruchamiaj kodu od ChatGPT w ciemno. Najpierw go przeczytaj. Zwróć uwagę na:
- Zmyślone selektory: ChatGPT czasem wymyśla klasy CSS, które w ogóle nie istnieją na stronie.
- Brakujące biblioteki: upewnij się, że masz uwzględnione
pip install requests beautifulsoup4(alboplaywright, itd.). - Zahardkodowane wartości: sprawdź, czy URL, nazwy pól i ścieżki plików są poprawne.
Skonfiguruj wirtualne środowisko Pythona, zainstaluj zależności i uruchom skrypt na małej próbce (jedna lub dwie strony). Sprawdź CSV — czy kolumny są uzupełnione? Czy są puste miejsca tam, gdzie oczekiwałeś danych?
Krok 4: Doprecyzuj za pomocą promptów uzupełniających
ChatGPT najlepiej działa w iteracji. Jeśli pierwszy skrypt pobiera tylko stronę 1, zapytaj:
„Skrypt scrapuje tylko pierwszą stronę. Czy możesz dodać paginację, aby pobierał wszystkie strony? Strona używa ?page=1, ?page=2 itd. Zatrzymaj się, gdy strona zwróci zero wyników albo po 50 stronach.”
Jeśli brakuje pól, poproś ChatGPT o dodanie fallbacków regex dla e-maili lub numerów telefonu. Jeśli strona jest mocno oparta na JS, poproś o wersję w Playwright. Każdy kolejny prompt buduje na poprzednim kodzie — traktuj to jak pair programming z bardzo szybkim (ale czasem zbyt pewnym siebie) partnerem.
5 gotowych szablonów promptów ChatGPT do web scrapingu
Nie spotkałem się z innym przewodnikiem, który to oferuje. Opracowałem, przetestowałem i dopracowałem pięć szablonów promptów uporządkowanych według scenariusza. Skopiuj je, podmień URL i fragment HTML-a, a ChatGPT zwróci działający kod za pierwszym razem — albo bardzo blisko tego.
Szablon 1: Scraper strony listingu (katalogi produktów, katalogi firm)
Kiedy używać: jesteś na stronie z wieloma elementami (produkty, firmy, oferty pracy) i chcesz jeden wiersz na element.
Jesteś seniorem inżynierii Pythona. Napisz scraper webowy w Pythonie 3.11 z użyciem BeautifulSoup 4.
Docelowy URL: [TWÓJ URL]
Cel: wyciągnij każdą kartę elementu na stronie i zwróć jeden wiersz na element.
Potrzebne pola (selektory CSS w nawiasach — wyprowadzone z Inspect):
- [pole_1] ([selektor_1])
- [pole_2] ([selektor_2])
- [pole_3] ([selektor_3])
- [pole_4] ([selektor_4, atrybut jeśli potrzebny])
Wyjście: zapisz do items.csv z kodowaniem UTF-8 i wierszem nagłówka.
Wymagania:
- użyj requests z realistycznym nagłówkiem User-Agent
- obsłuż brakujące pola bez błędu (None zamiast crashu)
- na końcu wypisz liczbę wyekstrahowanych elementów
- dodaj 1-sekundowe opóźnienie między żądaniami, jeśli używasz pętli
Poniżej jest reprezentatywny fragment HTML z tej strony (jedna karta elementu):
[WKLEJ 20-40 LINII PRAWDZIWEGO HTML-A TUTAJ]
Oczekiwany wynik: plik CSV z jednym wierszem na element, z kolumnami zgodnymi z nazwami pól.
Szablon 2: Scraper strony szczegółów / podstrony (pojedyncze strony produktu lub profilu)
Kiedy używać: masz jedną stronę z bogatymi detalami (strona produktu, profil osoby, oferta nieruchomości) i chcesz wyciągnąć wszystko do jednego uporządkowanego rekordu.
Napisz funkcję Pythona `scrape_detail(url)`, która przyjmuje URL strony szczegółów i zwraca słownik z tymi kluczami:
- [pole_1]
- [pole_2]
- [pole_3]
- [pole_4]
- [pole_5]
Użyj BeautifulSoup. Łagodnie obsługuj brakujące pola (zwracaj None).
Dodaj fallbacki regex dla e-maila i telefonu — nie każda strona opakowuje je w spójne znaczniki.
Zwróć słownik i jednocześnie dopisz go jako jeden wiersz do details.csv (utwórz plik z nagłówkiem przy pierwszym wywołaniu).
Referencyjny fragment HTML z prawdziwej strony szczegółów:
[WKLEJ 40-60 LINII HTML-A JEDNEJ STRONY SZCZEGÓŁÓW]
Oczekiwany wynik: słownik dla każdej strony oraz rosnący plik CSV z jednym wierszem na stronę szczegółów.
Szablon 3: Scraper strony dynamicznej / renderowanej przez JS (Playwright)
Kiedy używać: strona ładuje treść przez JavaScript (React, Angular itd.) — w źródle widzisz pusty <div id="root">.
Napisz scraper webowy w Pythonie z użyciem Playwright (sync API) dla strony renderowanej przez JavaScript.
Docelowy URL: [TWÓJ URL]
Cel: wyciągnij wszystkie karty wyników, które pojawiają się po pełnym załadowaniu strony.
Wymagania:
- użyj `page.wait_for_selector('[TWÓJ SELEKTOR KARTY]', timeout=15000)`, aby poczekać na treść
- przewiń stronę do samego dołu dwa razy, z 1-sekundową przerwą między przewinięciami, żeby uruchomić lazy loading
- z każdej karty wyciągnij: [pole_1], [pole_2], [pole_3], [pole_4]
- zapisz do results.json jako listę słowników, UTF-8
- uruchom najpierw w trybie headless=False (żebym mógł obserwować) i dodaj 2-sekundową pauzę na końcu przed zamknięciem
Nie używaj requests ani BeautifulSoup — tylko Playwright.
Oczekiwany wynik: plik JSON z jednym obiektem na kartę wyniku, z uzupełnionymi wszystkimi polami.
Szablon 4: Obsługa paginacji (scraping wielu stron)
Kiedy używać: masz już działający scraper jednej strony i musisz przejść przez wszystkie strony.
Weź poniższy istniejący scraper w BeautifulSoup i owiń go w pętlę paginacji, która zbiera WSZYSTKIE strony, nie tylko stronę 1.
Strona używa paginacji przez parametr URL: ?page=1, ?page=2 itd.
Warunek zakończenia: gdy bieżąca strona zwraca zero elementów, LUB gdy status odpowiedzi nie jest 200, LUB gdy dojdziesz do strony 100 (limit bezpieczeństwa).
Dodaj:
- 1,5-sekundowe uprzejme opóźnienie między żądaniami stron
- try/except wokół każdego żądania, które loguje błąd i idzie dalej
- komunikat postępu co 5 stron: „Strona 15 → 300 elementów do tej pory”
- końcowy zapis do items_all.csv
Istniejący scraper:
[WKLEJ TUTAJ SWÓJ OBECNY JEDNOSTRONICOWY SKRYPT]
Oczekiwany wynik: jeden CSV ze wszystkimi elementami ze wszystkich stron oraz komunikaty postępu w konsoli.
Szablon 5: Czyszczenie i strukturyzacja danych (podejście „wklej HTML”)
Kiedy używać: masz już surowy HTML (z curl, z przeglądarki lub z pliku) i chcesz tylko, żeby ChatGPT zamienił go w czyste, uporządkowane dane — bez kodu.
Wkleję surowy HTML ze strony produktu. Nie musisz pisać kodu — zwróć tylko wyekstrahowane dane jako obiekt JSON zgodny z tym schematem:
{
"name": string,
"brand": string,
"price": number,
"currency": string (ISO 4217),
"availability": "in_stock" | "out_of_stock" | "preorder" | "unknown",
"rating": number (0-5) or null,
"review_count": integer or null,
"description": string (max 500 chars),
"key_specs": [{"name": string, "value": string}]
}
Użyj null dla wszystkiego, czego naprawdę nie możesz znaleźć — NIE zmyślaj.
Zwróć TYLKO obiekt JSON, bez komentarza i bez bloku markdown.
HTML:
[WKLEJ TUTAJ PEŁNY HTML STRONY]
Oczekiwany wynik: pojedynczy obiekt JSON gotowy do wklejenia do arkusza kalkulacyjnego lub bazy danych.
Gdzie ChatGPT web scraping się psuje — uczciwe ograniczenia
Większość poradników całkowicie pomija ten fragment. Spędziłem wystarczająco dużo czasu na debugowaniu scraperów wygenerowanych przez ChatGPT, żeby dokładnie wiedzieć, gdzie się rozbijają — a 2025 Stack Overflow survey potwierdza, że tylko 3% programistów „bardzo ufa” wynikowi AI. Oto dlaczego.
Strony mocno oparte na JavaScript i dynamiczne
Ponad 98,8% stron używa JavaScriptu do funkcji po stronie klienta. Sam React działa już na 7,2% wszystkich stron — to ~67% wzrost w ciągu jednego roku. Gdy prosisz ChatGPT, żeby „zeskrobał tę stronę”, jego domyślny wynik to skrypt requests + BeautifulSoup. Taki skrypt pobiera surowy HTML — a na stronie React czy Angular ten surowy HTML to zwykle tylko pusty <div id="root">. Prawdziwe dane ładują się dopiero po wykonaniu JavaScriptu, a requests tego nie robi.
ChatGPT może wygenerować kod w Selenium lub Playwright, jeśli o to poprosisz, ale takie skrypty są wolniejsze (Playwright średnio 2,9 sekundy na załadowanie strony wobec czasu poniżej sekundy w przypadku statycznych żądań) i często wymagają debugowania warunków oczekiwania, przewijania i selektorów elementów, które ChatGPT zgaduje błędnie.
Zabezpieczenia antybotowe i CAPTCHA
Cloudflare chroni około 20% wszystkich stron internetowych, a usługi takie jak DataDome deklarują 99,9% skuteczności wykrywania botów. Zwykłe requests.get() z user-agentem Pythona to, mówiąc wprost, klasyczny sygnał bota. Skrypty wygenerowane przez ChatGPT nie zawierają rotacji proxy, spoofingu TLS fingerprintu, obsługi cookies ani rozwiązywania CAPTCHA. Na każdej komercyjnej stronie z choćby podstawową ochroną skrypt zostaje zablokowany przy pierwszym żądaniu.
Paginacja i scraping na dużą skalę
Domyślna pętla paginacji w ChatGPT iteruje po ?page=N albo klika przycisk .next. Strony z realnego świata używają paginacji opartej na kursorach, infinite scroll z IntersectionObserver albo wywołań GraphQL. ChatGPT nie wygeneruje poprawnego kodu dla takich przypadków, jeśli nie pokażesz mu dokładnego wywołania sieciowego — a nawet wtedy pętle bywają kruche. Przewodnik Oxylabs po scrapingu z ChatGPT i tutorial Decodo z 2026 roku oba wskazują paginację jako miejsce nr 1, gdzie ich przykładowe scrapery potrzebują drugiego lub trzeciego promptu.
Scraping cykliczny i harmonogramowany
ChatGPT daje Ci jednorazowy skrypt. Nie ma tu harmonogramu, wykrywania zmian ani alertów. Jeśli chcesz „sprawdzać ceny konkurencji każdego ranka”, musisz nauczyć się crona, Airflow albo Lambda — a tego ChatGPT nie obejmuje w swojej pierwszej odpowiedzi. Dla użytkowników biznesowych, którzy potrzebują danych cyklicznie, to ślepa uliczka.
Problem szybkości i kosztów
Na stronach ciężkich od JS rzeczywiste czasy na stronę przy Selenium lub Playwright wynoszą 3–10 sekund na stronę w idealnych warunkach, a 40–60 sekund na stronę przy retry i oczekiwaniu na antybota — frustracja często opisywana na forach i w tutorialach.
Jeśli używasz API ChatGPT do parsowania HTML-a (podejście „wklej HTML” na większą skalę), koszty tokenów szybko rosną. Przy obecnym cenniku GPT-4o (~2,50 USD/M tokenów wejściowych, 10 USD/M tokenów wyjściowych) przetworzenie 1000 stron produktowych kosztuje mniej więcej 95–105 USD tylko w tokenach. W przypadku GPT-4o mini to około 6,50 USD za tę samą skalę. Dodaj koszty proxy (3–10 USD/GB), utrzymanie lokalnego crawlera i czas dewelopera, a podejście „po prostu użyj ChatGPT” zaczyna wyglądać drogo.
| Skala | Szacowany koszt tokenów GPT-4o | Szacowany koszt tokenów GPT-4o mini |
|---|---|---|
| 100 stron | ~9,55 USD | ~0,65 USD |
| 1 000 stron | ~95,50 USD | ~6,50 USD |
| 10 000 stron | ~955 USD | ~65 USD |
Szacunki zakładają około 50 tys. tokenów wejściowych i około 2 tys. tokenów wyjściowych na stronę. Rzeczywiste koszty zależą od rozmiaru strony i złożoności wyniku.
ChatGPT web scraping vs. no-code AI scraper vs. własny kod: ramy decyzyjne
Nie każdy projekt scrapingu wymaga tego samego narzędzia. To ramy decyzyjne, których używam w Thunderbit po testach wszystkich trzech podejść na realnych projektach.
| Scenariusz | ChatGPT + Python | No-code AI scraper (np. Thunderbit) | Własny kod + proxy |
|---|---|---|---|
| Proste strony statyczne | ✅ Świetne — szybko generuje | ✅ Działa, choć może być przesadą | ⚠️ Przeinżynierowane |
| Treści renderowane przez JS / dynamiczne | ⚠️ Wymaga Selenium/Playwright — kod często się psuje | ✅ Obsługa przez przeglądarkę/chmurę | ✅ Pełna kontrola |
| Strony z antybotem / CAPTCHA | ❌ ChatGPT nie rozwiąże CAPTCHA | ✅ Infrastruktura cloud scraping obsługuje wiele przypadków | ✅ Z rotacją proxy |
| Paginacja (100+ stron) | ⚠️ Kruche pętle, wymaga debugowania | ✅ Wbudowana obsługa paginacji | ✅ Stabilne przy dobrym inżynieringu |
| Użytkownik nietechniczny | ❌ Wymaga znajomości Pythona | ✅ 2 kliknięcia, bez kodu | ❌ Wymaga programowania |
| Cykliczny / harmonogramowany scraping | ❌ Ręczne ponowne uruchamianie | ✅ Funkcja scheduled scraper | ✅ Z crona / orkiestracją |
| Eksport do Sheets/Airtable/Notion | ⚠️ Wymaga dodatkowego kodu | ✅ Natychmiastowy eksport jednym kliknięciem | ⚠️ Dodatkowy kod integracyjny |
Krótko mówiąc: używaj ChatGPT do szybkich, jednorazowych skryptów i nauki. Użyj no-code, takiego jak Thunderbit, do scrapingu produkcyjnego, cyklicznego albo dla osób nietechnicznych. Własny kod + proxy wybierz wtedy, gdy robisz projekt inżynieryjny na poziomie enterprise i potrzebujesz pełnej kontroli.
Alternatywa bez kodu: jak Thunderbit obsługuje zadania web scrapingu bez programowania
Dla czytelników, którzy nie programują — albo którzy stracili już wystarczająco dużo wieczorów na debugowanie skryptów z ChatGPT — istnieje zupełnie inna ścieżka. ChatGPT generuje kod. Thunderbit po prostu go omija.
Pracuję w zespole Thunderbit, więc mówię to wprost. Ale naprawdę wierzę, że to najszybsza droga dla większości użytkowników biznesowych. Oto, jak wygląda ten workflow.
AI Suggest Fields: automatyczne wykrywanie struktury danych na każdej stronie
Otwórz dowolną stronę, kliknij rozszerzenie Thunderbit do Chrome i wybierz „AI Suggest Fields”. AI Thunderbit odczytuje wyrenderowaną stronę — łącznie z treścią załadowaną przez JS — i proponuje nazwy kolumn oraz typy danych. Bez Inspect, bez selektorów CSS, bez inżynierii promptów. Potem klikasz „Scrape”.
Porównaj to z podejściem ChatGPT: otwierasz DevTools, znajdujesz selektory, piszesz prompt, sprawdzasz kod, instalujesz zależności, uruchamiasz skrypt, kontrolujesz wynik, iterujesz. Thunderbit skraca to wszystko do dwóch kliknięć.
Scraping podstron, aby automatycznie wzbogacać listingi
Po zeskrobaniu strony listingu kliknij „Scrape Subpages”. Thunderbit odwiedza stronę szczegółów każdego wiersza i dopisuje dodatkowe pola — takie jak e-mail, telefon czy bio — do istniejącej tabeli. W przypadku ChatGPT potrzebowałbyś osobnego skryptu, pętli, obsługi błędów dla każdej podstrony i sposobu scalenia danych. Thunderbit robi to jednym krokiem.
Eksport gdzie chcesz: Google Sheets, Airtable, Notion, Excel
Thunderbit oferuje darmowy eksport jednym kliknięciem do Google Sheets, Airtable, Notion i Excela — nie tylko do CSV. Skrypt wygenerowany przez ChatGPT zwykle zapisuje lokalny plik CSV lub JSON. Wysłanie danych do Sheets lub Airtable wymaga dodatkowych bibliotek i kodu autoryzacji.
Cloud scraping vs. browser scraping
Thunderbit daje Ci dwa tryby. Cloud scraping działa na serwerach Thunderbit, obsługuje około 50 stron na partię i jest szybki dla publicznych witryn. Browser scraping używa Twojej zalogowanej sesji dla stron za loginem lub z ograniczonym dostępem. W przypadku ChatGPT musiałbyś konfigurować proxy, cookies i obsługę sesji w kodzie — a każdy z tych elementów to osobna przygoda z debugowaniem.
Pod spodem Thunderbit korzysta z wielu modeli AI (w tym ChatGPT, Gemini, Claude i innych), aby wizualnie czytać strony i rozpoznawać, co należy wyciągnąć. W pewnym sensie Thunderbit już używa ChatGPT — plus trzech innych czołowych modeli — i sam zajmuje się pobieraniem, renderowaniem, antybotem, paginacją oraz eksportem.
Przykłady z realnego świata: sprzedaż, e-commerce i nieruchomości
Większość poradników o scrapingu z ChatGPT pokazuje „Books to Scrape” albo inną zabawkową stronę. Oto, jak wygląda prawdziwy scraping biznesowy — zarówno podejście z ChatGPT, jak i skrót przez Thunderbit.
Pozyskiwanie leadów sprzedażowych z katalogów firm
Scenariusz: potrzebujesz nazw, e-maili i numerów telefonów z katalogu firm do outbound sales.
Podejście ChatGPT: użyj Szablonu 1 (strona listingu), aby zeskrobać katalog, a następnie Szablonu 2 (strona szczegółów), aby odwiedzić każdy profil i pobrać dane kontaktowe. Potrzebujesz fallbacków regex dla e-maili i telefonów, uprzejmego opóźnienia oraz deduplikacji. Spodziewaj się 30–60 minut konfiguracji i debugowania.
Podejście Thunderbit: otwórz katalog, kliknij „AI Suggest Fields”, zeskrob listing, a następnie kliknij „Scrape Subpages”, aby pobrać dane kontaktowe z każdego profilu. Eksportuj do arkusza gotowego do CRM. Całkowity czas: około 3 minut. Wbudowane ekstraktory e-maili i telefonów w Thunderbit robią parsowanie automatycznie.
Monitorowanie cen konkurencji w e-commerce
Scenariusz: chcesz śledzić ceny produktów konkurencji, dostępność i SKU co tydzień.
Podejście ChatGPT: wygeneruj scraper Szablonem 1, dodaj paginację z Szablonu 4 i uruchamiaj go ręcznie co tydzień. Jeśli konkurent zmieni układ strony, selektory przestaną działać i zaczynasz od nowa.
Podejście Thunderbit: skonfiguruj scraper raz, użyj planowanego cloud scrapingu Thunderbit, aby uruchamiać go codziennie lub co tydzień, i eksportuj do Google Sheets. AI ponownie odczytuje strukturę strony przy każdym uruchomieniu, więc zmiany układu niczego nie psują. Więcej o tym workflow znajdziesz w naszym przewodniku po scrapingu cen.
Zbieranie danych ofert nieruchomości
Scenariusz: potrzebujesz cen nieruchomości, adresów, liczby sypialni/łazienek i informacji o agencie z serwisu ogłoszeniowego.
Podejście ChatGPT: większość stron nieruchomości (w stylu Zillow) to React SPA z agresywną ochroną antybotową. Skrypt requests + BeautifulSoup zwróci pustą stronę. Wersja w Playwright zostaje ograniczona limitem żądań w kilka minut.
Podejście Thunderbit: cloud scraping z wykrywaniem pól przez AI obsługuje renderowanie JS i dopasowuje się do zmian układu. Portale nieruchomości często się przebudowują — AI Thunderbit czyta stronę od nowa za każdym razem, więc nie musisz aktualizować selektorów. Zobacz nasz przewodnik po web scrapingu w nieruchomościach, żeby zobaczyć cały proces.
Więcej niż jednorazowy scraping: pipeline z ChatGPT API vs. Thunderbit Extract API
Jeśli budujesz scraping w produkcie albo pipeline, pytanie się zmienia: użyć ChatGPT API do parsowania HTML-a czy specjalnie stworzonego API do scrapingu?
Używanie ChatGPT API do parsowania HTML
Podejście: użyj lokalnego crawlera (requests, Playwright), aby pobrać HTML, a potem wyślij go do API OpenAI, żeby wyciągnąć uporządkowany JSON. To jest obejście typu „wklej HTML” na większą skalę.
Działa. Koszty i utrzymanie są jednak realne. Przy cenach GPT-4o, 1000 stron kosztuje około 95 USD w tokenach. Sam utrzymujesz crawler, proxy, prompt engineering i schemat wyjściowy. Gdy strona się zmieni, prompt się psuje i trzeba go dostrajać.
Thunderbit Extract API: stworzone specjalnie dla ustrukturyzowanych danych webowych
Otwarte API Thunderbit oferuje inny model. Definiujesz JSON Schema, wysyłasz POST z URL-em i otrzymujesz z powrotem uporządkowane dane. Renderowanie JS i obsługa antybota są wbudowane. Przetwarzanie wsadowe obsługuje do 100 URL-i na zapytanie.
| Funkcja | ChatGPT API + własny kod | Thunderbit Extract API |
|---|---|---|
| Uporządkowane wyjście | Ręczny schemat w prompcie | Schemat JSON w definicji |
| Renderowanie JS | Po Twojej stronie (Playwright itd.) | Wbudowane (wiele trybów renderowania) |
| Antybot / CAPTCHA | Po Twojej stronie (proxy itd.) | Obsługiwane automatycznie |
| Przetwarzanie wsadowe | Budujesz pętlę samodzielnie | Endpoint batch (do 100 URL-i) |
| Utrzymanie | Prompt się psuje, kod się starzeje | Zarządzany silnik AI |
Dla zespołów, które chcą otrzymywać ustrukturyzowane dane webowe jako usługę, bez utrzymywania własnego pipeline’u scrapingu, API Thunderbit jest krótszą drogą do produkcji. Sprawdź cennik Thunderbit, aby zobaczyć koszty kredytów za ekstrakcję.
Jak uzyskać lepsze wyniki z ChatGPT web scraping
Kilka rzeczy, których nauczyłem się na własnych błędach.
Bądź precyzyjny w promptach. Zawsze podawaj: język programowania, bibliotekę, docelowy URL, selektory CSS, format wyjściowy i instrukcje dotyczące sytuacji brzegowych. Ogólne prompty dają ogólny kod.
Wklejaj fragmenty HTML, a nie tylko URL-e. ChatGPT nie może wejść na stronę. Fragment HTML-a to jego jedyne źródło prawdy o strukturze strony. Wklejenie nawet 20–40 linii jednej karty danych znacząco poprawia trafność.
Poproś ChatGPT o lint i optymalizację. Po wygenerowaniu skryptu zapytaj: „Przejrzyj ten kod pod kątem błędów, dodaj obsługę wyjątków i zoptymalizuj wydajność.” Zaskakująco dobrze wyłapuje własne błędy przy drugim podejściu.
Zawsze testuj najpierw na małej próbce. Uruchom skrypt na 1–2 stronach, zanim przejdziesz do większej skali. Wykrycie uszkodzonego selektora na stronie 1 oszczędza Ci odkrycia tego po 500 nieudanych żądaniach.
Iteruj, nie zaczynaj od zera. Jeśli pierwszy skrypt jest poprawny w 80%, wklej wynik z powrotem i poproś ChatGPT o naprawienie pozostałych 20%. To właśnie w rozmowie iteracyjnej ChatGPT jest najmocniejszy.
Kwestie etyczne i prawne w ChatGPT web scraping
Aspekt prawny ma znaczenie, więc oto krótka wersja.
Według obecnych precedensów w USA scraping publicznie dostępnych danych nie jest federalnym przestępstwem komputerowym. Wyrok hiQ v. LinkedIn to ustanowił, a Meta v. Bright Data (styczeń 2024) to wzmocnił — sędzia uznał, że scrapowanie publicznych, wylogowanych danych z Facebooka i Instagrama nie naruszało warunków korzystania z Meta, ponieważ odwiedzający bez konta nie jest „użytkownikiem” związanym tymi warunkami.
Mimo to scrapowanie danych chronionych dostępem lub uwierzytelnianych, albo łamanie regulaminu strony po jego zaakceptowaniu, nadal może rodzić ryzyko prawne. A gdy scrapujesz dane osobowe (e-maile, numery telefonów), zastosowanie mają przepisy UE i Kalifornii dotyczące ochrony danych (RODO, CCPA), niezależnie od źródła danych.
Zawsze sprawdzaj robots.txt i Terms of Service przed scrapowaniem. Szanuj limity zapytań. Odpowiedzialnie obchodź się z danymi osobowymi. I korzystaj z narzędzi z wbudowanymi funkcjami zgodności — Thunderbit na przykład respektuje robots.txt i oferuje odpowiedzialne praktyki danych domyślnie. Jeśli chcesz zgłębić temat, zobacz nasz przewodnik po legalnych aspektach web scrapingu.
Kiedy używać ChatGPT do web scrapingu — a kiedy sięgnąć po coś lepszego
ChatGPT to naprawdę potężne narzędzie do web scrapingu — generuje szybkie prototypy i pomaga zrozumieć, jak scraping działa od środka. Do jednorazowych, prostych skryptów na statycznych stronach trudno znaleźć lepsze rozwiązanie.
Ale przy scrapingu produkcyjnym, cyklicznym lub na dużą skalę — zwłaszcza jeśli nie jesteś deweloperem — narzędzie stworzone do tego celu, takie jak Thunderbit, jest szybsze, bardziej niezawodne i nie wymaga utrzymania. A w projektach inżynieryjnych enterprise pełna kontrola daje własny kod z infrastrukturą proxy.
Moja ściągawka decyzyjna:
- Szybki jednorazowy projekt, nauka lub prototyp: ChatGPT + Python
- Użytkownicy biznesowi, bez kodu, cykliczne scrapingi: rozszerzenie Thunderbit do Chrome
- Pipeline dla deweloperów, dostęp do struktury przez API: Thunderbit API
- Skala enterprise, pełna kontrola: własny kod + proxy + orkiestracja
Jeśli chcesz spróbować ścieżki bez kodu, Thunderbit oferuje darmowy plan, dzięki któremu możesz przetestować wszystko na małą skalę i zobaczyć efekty na własne oczy. A jeśli chcesz zobaczyć narzędzie w akcji, nasz kanał YouTube zawiera instrukcje dla różnych zastosowań.
Wypróbuj Thunderbit do AI web scrapingu Get Started Free
FAQ
Czy ChatGPT naprawdę może sam scrapować strony internetowe?
Nie. ChatGPT generuje kod do scrapingu albo parsuje HTML, który mu dostarczysz, ale nie odwiedza URL-i, nie pobiera stron i nie wykonuje skryptów. Nawet ChatGPT Atlas (wbudowana przeglądarka uruchomiona w październiku 2025) to konwersacyjny asystent przeglądania — może streścić stronę, ale nie poda Ci uporządkowanego CSV z 500 wierszami.
Czy ChatGPT web scraping jest darmowy?
Darmowy plan ChatGPT może generować kod scrapujący bez kosztów. Ale uruchomienie tego kodu wymaga Pythona i bibliotek (za darmo), a jeśli używasz API OpenAI do parsowania HTML na większą skalę, zapłacisz za tokeny — około 6,50 USD za 1000 stron przy GPT-4o mini albo około 95 USD przy GPT-4o. Proxy i infrastruktura to dodatkowy koszt.
Jaka jest najlepsza biblioteka Pythona do scraperów tworzonych przez ChatGPT?
Do statycznych stron HTML najprostsze i najszybsze są BeautifulSoup z biblioteką requests. Do stron renderowanych przez JavaScript nowoczesnym wyborem jest Playwright — jest szybszy niż Selenium (średnio około 2,9 sekundy na załadowanie strony wobec 4,8 sekundy) i ma czytelniejsze API. Selenium przydaje się głównie w starszych projektach.
Czy mogę używać ChatGPT do scrapowania danych bez programowania?
Nie bezpośrednio. ChatGPT generuje kod, który i tak musisz uruchomić. Jeśli chcesz naprawdę bezkodową opcję, narzędzia takie jak Thunderbit pozwalają scrapować w dwóch kliknięciach — bez Pythona, bez terminala, bez debugowania. Dostajesz pola sugerowane przez AI, eksport jednym kliknięciem do Google Sheets lub Airtable oraz wbudowaną obsługę renderowania JS i zabezpieczeń antybotowych.
Czy scrapowanie stron przy użyciu kodu wygenerowanego przez ChatGPT jest legalne?
Scraping publicznie dostępnych, wylogowanych danych jest zasadniczo legalny według obecnych precedensów w USA (hiQ v. LinkedIn, Meta v. Bright Data). Jednak scrapowanie treści za loginem, łamanie regulaminu strony albo nieprawidłowe obchodzenie się z danymi osobowymi (e-maile, numery telefonów) może rodzić ryzyko prawne na gruncie prawa umów lub przepisów o prywatności, takich jak GDPR i CCPA. Zawsze sprawdź robots.txt i regulamin strony przed scrapowaniem.
Dowiedz się więcej


