Jeśli kiedykolwiek próbowałeś pobrać dane ze strony, która ładuje treści podczas przewijania, ukrywa ceny za logowaniem albo zmienia układ co drugi tydzień, wiesz, że to nie jest łatwe. Statyczne scrapery po prostu już nie wystarczają. W praktyce ponad 67% amerykańskich doradców inwestycyjnych korzysta dziś z web scrapingu do pozyskiwania danych alternatywnych, a 81% amerykańskich detalistów automatyzuje monitorowanie cen konkurencji. Ale jest haczyk: spora część tych danych siedzi na dynamicznych stronach, ładowanych przez JavaScript i ukrytych za interakcjami użytkownika. Właśnie tutaj wchodzą automatyzacja przeglądarki headless i narzędzia takie jak Puppeteer.
Jako ktoś, kto przez lata budował narzędzia do automatyzacji i AI (i tak, pobierał z niejednej strony dane dla zespołów sprzedaży i operacji), widziałem z pierwszej ręki, jak Puppeteer potrafi odblokować dane, których tradycyjne scrapery nie widzą. Widziałem też jednak, jak koszt kodowania bywa przeszkodą nie do przejścia dla użytkowników biznesowych. Dlatego w tym przewodniku pokażę Ci dokładnie, czym jest Puppeteer scraper, jak używać go do web scrapingu i kiedy warto sięgnąć po coś jeszcze prostszego — na przykład po Thunderbit, nasz no-code web scraper oparty na AI.
Czym jest Puppeteer Scraper? Krótkie wprowadzenie
Zacznijmy od podstaw. Puppeteer to otwartoźródłowa biblioteka Node.js od Google, która pozwala sterować przeglądarką Chrome lub Chromium w trybie headless za pomocą JavaScriptu. Mówiąc prościej: to jak robot, który może otwierać strony, klikać przyciski, wypełniać formularze, przewijać i — co najważniejsze — wyciągać dane, a wszystko to bez pokazywania czegokolwiek na ekranie.
Co wyróżnia Puppeteer?
- Potrafi renderować dynamiczne treści — czyli czeka, aż JavaScript się załaduje, tak jak zrobiłby to prawdziwy użytkownik.
- Potrafi symulować działania użytkownika: klikanie, wpisywanie, przewijanie, a nawet obsługę wyskakujących okienek.
- Świetnie sprawdza się przy scrapingu stron, na których dane pojawiają się dopiero po interakcji, takich jak listingi e-commerce, feedy społecznościowe czy panele analityczne.
Jak wypada na tle innych narzędzi?
- Selenium: klasyk automatyzacji przeglądarki. Działa z wieloma przeglądarkami i językami, ale jest cięższy i trochę bardziej „starej szkoły”. Świetny do testów wieloprzeglądarkowych, ale Puppeteer jest zwinniejszy w projektach Chrome/Node.js.
- Thunderbit: tutaj zaczyna się robić ciekawie. Thunderbit to no-code, AI-powered web scraper działający w Twojej przeglądarce. Zamiast pisać skrypty, po prostu klikasz „AI Suggest Fields” i pozwalasz AI zdecydować, co wyciągnąć. To idealne rozwiązanie dla użytkowników biznesowych, którzy chcą rezultatów bez kodu (więcej o tym później).
Krótko mówiąc: Puppeteer = maksymalna kontrola (jeśli kodujesz). Thunderbit = maksymalna wygoda (jeśli nie chcesz kodować).
Dlaczego web scraping z Puppeteer ma znaczenie dla użytkowników biznesowych
Czym jest data scraping i jak go robić w 2026 roku Get Started Free
Bądźmy szczerzy: web scraping to już nie tylko domena hakerów czy data scientistów. Z danych webowych korzystają dziś zespoły sprzedaży, operacji, marketingu, a nawet nieruchomości, żeby wyprzedzić konkurencję. A ponieważ tak wiele kluczowych informacji biznesowych jest zamkniętych na dynamicznych stronach, Puppeteer często staje się kluczem do ich odblokowania.
Oto kilka praktycznych zastosowań:
| Przypadek użycia | Kto zyskuje | Wpływ / ROI |
|---|---|---|
| Generowanie leadów | Sprzedaż, rozwój biznesu | Automatyzacja budowania list prospectów; oszczędność 8+ godzin tygodniowo na handlowca (case study) |
| Monitorowanie cen | E-commerce, operacje produktu | Śledzenie konkurencji w czasie rzeczywistym; jedna firma zaoszczędziła 3,8 mln USD rocznie (source) |
| Badania rynku | Marketing, strategia, finanse | 67% doradców inwestycyjnych korzysta z danych pozyskanych z web scrapingu; w niektórych przypadkach ROI sięga nawet 890% (source) |
| Agregacja ofert nieruchomości | Agenci, analitycy | Scraping 50+ stron ofert w kilka minut, a nie godzin (source) |
| Śledzenie zgodności | Operacje, dział prawny | Automatyczne monitorowanie; jeden ubezpieczyciel uniknął kar na poziomie 50 mln USD (source) |
I nie zapominajmy: ponad 40% pracowników spędza jedną czwartą tygodnia na powtarzalnych zadaniach, takich jak zbieranie danych. Automatyzacja tego procesu za pomocą web scrapingu to nie tylko „miły dodatek” — to realna przewaga konkurencyjna.
Pierwsze kroki: konfiguracja Puppeteer scraper
Gotowy, by zakasać rękawy? Oto jak uruchomić Puppeteer w mniej niż 10 minut (zakładając, że masz choć podstawy JavaScriptu):
1. Zainstaluj Node.js
Puppeteer działa na Node.js. Pobierz najnowszą wersję LTS z nodejs.org.
2. Utwórz nowy folder projektu
Otwórz terminal i wpisz:
mkdir puppeteer-scraper-demo
cd puppeteer-scraper-demo
npm init -y
3. Zainstaluj Puppeteer
npm install puppeteer
To pobierze też zgodną wersję Chromium (około 100 MB).
4. Utwórz swój pierwszy skrypt
Stwórz plik o nazwie scrape.js:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com', { waitUntil: 'domcontentloaded' });
const title = await page.title();
console.log('Tytuł strony:', title);
await browser.close();
})();
Uruchom go poleceniem:
node scrape.js
Jeśli zobaczysz „Tytuł strony: Example Domain”, gratulacje — właśnie zautomatyzowałeś Chrome!
Budujemy pierwszy skrypt do web scrapingu w Puppeteer
Przejdźmy do konkretów. Załóżmy, że chcesz pobrać cytaty z quotes.toscrape.com (strony demonstracyjnej dla scraperów).
Krok 1: Przejdź do strony
await page.goto('http://quotes.toscrape.com', { waitUntil: 'networkidle0' });
Krok 2: Wyciągnij dane
const quotes = await page.evaluate(() => {
return Array.from(document.querySelectorAll('.quote')).map(node => ({
text: node.querySelector('.text')?.innerText.trim(),
author: node.querySelector('.author')?.innerText.trim(),
tags: Array.from(node.querySelectorAll('.tag')).map(tag => tag.innerText.trim())
}));
});
console.log(quotes);
Krok 3: Obsłuż paginację
let hasNext = true;
let allQuotes = [];
while (hasNext) {
// Pobierz cytaty jak wyżej
const quotes = await page.evaluate(/* ... */);
allQuotes.push(...quotes);
const nextButton = await page.$('li.next > a');
if (nextButton) {
await Promise.all([
page.click('li.next > a'),
page.waitForNavigation({ waitUntil: 'networkidle0' })
]);
} else {
hasNext = false;
}
}
Krok 4: Zapisz do JSON
const fs = require('fs');
fs.writeFileSync('quotes.json', JSON.stringify(allQuotes, null, 2));
I gotowe — podstawowy Puppeteer scraper, który przechodzi przez strony, pobiera dane, obsługuje paginację i zapisuje wyniki.
Zaawansowane techniki Puppeteer scraper: obsługa dynamicznych treści
Większość realnych stron nie jest tak prosta jak statyczna lista. Oto jak poradzić sobie z trudniejszymi przypadkami:
1. Czekanie na dynamiczne elementy
await page.waitForSelector('.product-list-item');
To zapewnia, że treść, której potrzebujesz, załadowała się, zanim spróbujesz ją pobrać.
2. Symulowanie działań użytkownika
- Kliknięcie przycisku:
await page.click('#load-more'); - Wpisanie do pola:
await page.type('#search', 'laptop'); - Przewijanie przy infinite scroll:
// Uwaga: page.waitForTimeout zostało usunięte w Puppeteer v22. Zamiast tego użyj zwykłego promise. const sleep = (ms) => new Promise(r => setTimeout(r, ms)); let previousHeight = await page.evaluate('document.body.scrollHeight'); while (true) { await page.evaluate('window.scrollTo(0, document.body.scrollHeight)'); await sleep(1500); const newHeight = await page.evaluate('document.body.scrollHeight'); if (newHeight === previousHeight) break; previousHeight = newHeight; }
**3. Obsługa logowania**
```javascript
await page.goto('https://exampleshop.com/login');
await page.type('#login-username', 'myusername');
await page.type('#login-password', 'mypassword');
await page.click('#login-button');
await page.waitForNavigation({ waitUntil: 'networkidle0' });
4. Radzenie sobie z danymi ładowanymi przez AJAX Czasem dane nie znajdują się w DOM, tylko przychodzą z wywołania API. Możesz przechwycić odpowiedzi sieciowe tak:
page.on('response', async response => {
if (response.url().includes('/api/products')) {
const data = await response.json();
// Przetwórz dane
}
});
Praktyczny przykład: pobieranie danych produktowych ze strony e-commerce
Złóżmy to wszystko w całość. Wyobraź sobie, że chcesz pobrać nazwy produktów, ceny i obrazy z (demo) sklepu internetowego po zalogowaniu.
const puppeteer = require('puppeteer');
const fs = require('fs');
(async () => {
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
// Krok 1: Zaloguj się
await page.goto('https://exampleshop.com/login');
await page.type('#login-username', 'myusername');
await page.type('#login-password', 'mypassword');
await page.click('#login-button');
await page.waitForNavigation({ waitUntil: 'networkidle0' });
// Krok 2: Przejdź do strony kategorii
await page.goto('https://exampleshop.com/category/laptops', { waitUntil: 'networkidle0' });
// Krok 3: Wyciągnij produkty
const products = await page.evaluate(() => {
return Array.from(document.querySelectorAll('.product-item')).map(item => ({
name: item.querySelector('.product-title')?.innerText.trim() || '',
price: item.querySelector('.product-price')?.innerText.trim() || '',
image: item.querySelector('img.product-image')?.src || ''
}));
});
// Krok 4: Zapisz do JSON
fs.writeFileSync('products.json', JSON.stringify(products, null, 2));
await browser.close();
})();
Ten skrypt loguje użytkownika, przechodzi między stronami, pobiera dane i zapisuje je — wszystko automatycznie. Jeśli potrzebujesz bardziej zaawansowanych możliwości, możesz dodać pętle dla paginacji albo wejść w każdy produkt osobno, aby pobrać dodatkowe szczegóły.
Thunderbit: upraszczamy Puppeteer scraper dzięki AI
Wypróbuj rozszerzenie Thunderbit do Chrome Pobieraj dane z dowolnej strony z pomocą AI w 2 kliknięciach. Get Started Free
Jeśli dotarłeś aż tutaj i myślisz: „Fajnie, ale nie chcę pisać kodu za każdym razem, gdy potrzebuję nowego zestawu danych”, nie jesteś sam. Dokładnie dlatego stworzyliśmy Thunderbit.
Co wyróżnia Thunderbit?
- Bez kodu: Po prostu zainstaluj rozszerzenie Thunderbit do Chrome, otwórz stronę, którą chcesz zeskrapować, i kliknij „AI Suggest Fields”.
- Wykrywanie pól oparte na AI: Thunderbit czyta stronę i sugeruje najlepsze kolumny do wyciągnięcia — takie jak „Nazwa produktu”, „Cena”, „Obraz” itd.
- Obsługa dynamicznych treści: Infinite scroll, wyskakujące okienka i podstrony? AI Thunderbit poradzi sobie z tym, klikając przez paginację, a nawet odwiedzając stronę szczegółów każdego produktu, aby wzbogacić dane.
- Natychmiastowy eksport: Wyślij dane prosto do Excel, Google Sheets, Notion lub Airtable jednym kliknięciem. Bez dodatkowych opłat za eksport.
- Szablony dla popularnych serwisów: Chcesz pobrać dane z Amazon, Zillow albo LinkedIn? Thunderbit ma gotowe szablony — bez konfiguracji.
- Scraping w chmurze lub w przeglądarce: Przy większych zadaniach Thunderbit może w chmurze pobrać nawet 50 stron naraz.
Widziałem użytkowników, którzy przechodzili od „chciałbym mieć te dane” do „proszę, oto mój arkusz” w mniej niż pięć minut. A najlepsze? Koniec z martwieniem się o to, że skrypty przestaną działać, gdy strona się zmieni — AI Thunderbit dopasowuje się na bieżąco.
Wypróbuj Thunderbit AI Web Scraper za darmo
Puppeteer kontra Thunderbit: jak wybrać właściwe narzędzie do web scrapingu
Więc co wybrać? Tak podchodzę do tego w przypadku zespołów:
| Czynnik | Puppeteer (kod) | Thunderbit (no-code, AI) |
|---|---|---|
| Łatwość użycia | Wymaga znajomości JavaScriptu i DOM | Klikasz i wskazujesz, AI sugeruje pola |
| Szybkość wdrożenia | Od kilku godzin do kilku dni przy złożonych zadaniach | Minuty — instalujesz i działasz |
| Kontrola / elastyczność | Maksymalna: możesz napisać dowolną logikę i zintegrować ją z innym kodem | Wysoka w standardowych przypadkach; mniej odpowiedni do bardzo niestandardowych workflow |
| Dynamiczne treści | Ręczne skrypty do czekania, kliknięć i przewijania | Wbudowane AI automatycznie obsługuje dynamiczne treści, paginację i podstrony |
| Utrzymanie | To Ty utrzymujesz skrypty — aktualizujesz je, gdy strona się zmienia | AI dopasowuje się do zmian układu; mniejszy nakład utrzymania po stronie użytkownika |
| Eksport danych | Musisz napisać własną logikę eksportu | Eksport jednym kliknięciem do Excel, Sheets, Notion, Airtable, CSV, JSON |
| Najlepsze dla | Programistów, bardzo niestandardowych lub dużych projektów scrapingu | Użytkowników biznesowych, projektów wymagających szybkiej realizacji, zespołów nietechnicznych |
| Koszt | Darmowy (poza Twoim czasem i infrastrukturą) | Dostępny darmowy plan; płatne plany w modelu kredytowym (zobacz cennik Thunderbit) |
W skrócie:
- Użyj Puppeteer, jeśli potrzebujesz pełnej kontroli, masz zasoby programistyczne albo chcesz zintegrować scraping z większą aplikacją.
- Użyj Thunderbit, jeśli chcesz szybko uzyskać wyniki, nie chcesz kodować albo zależy Ci na tym, by odciążyć osoby nietechniczne.
Szczerze? Widziałem zespoły, które korzystają z obu: Thunderbit do szybkich wygranych i prototypów, Puppeteer do głębszych integracji i nietypowych przypadków.
Lista kontrolna krok po kroku: jak zrealizować udany projekt web scrapingu w Puppeteer
Oto moja sprawdzona lista kontrolna dla płynnego projektu scrapingu w Puppeteer:
- Określ cele: Jakich danych potrzebujesz? Gdzie się znajdują?
- Przeanalizuj stronę: Czy jest dynamiczna? Czy wymaga logowania? Czy ma zabezpieczenia anty-bot?
- Skonfiguruj środowisko: Node.js, Puppeteer i ewentualne biblioteki pomocnicze.
- Napisz proof of concept: Zacznij od jednej strony, dopracuj selektory.
- Obsłuż dynamiczne treści: Użyj
waitForSelector, symuluj kliknięcia i przewijanie, jeśli trzeba. - Dodaj paginację lub pętle: Pobierz wszystkie strony, nie tylko jedną.
- Wdróż taktyki antyblokujące: Losuj opóźnienia, ustaw realistyczny User-Agent, jeśli trzeba użyj proxy.
- Eksportuj i zweryfikuj dane: Zapisz do JSON/CSV, sprawdź kompletność.
- Zoptymalizuj i obsłuż błędy: Dodaj try/catch, loguj postępy, łagodnie obsługuj brakujące dane.
- Monitoruj i utrzymuj: Strony się zmieniają — bądź gotowy zaktualizować skrypt.
Wskazówki diagnostyczne:
- Jeśli selektory zwracają null, jeszcze raz sprawdź HTML i użyj mechanizmów czekania.
- Jeśli zostajesz zablokowany, zwolnij tempo, rotuj IP albo użyj wtyczek stealth.
- Jeśli skrypt się wywala, sprawdź wycieki pamięci lub nieobsłużone wyjątki.
Podsumowanie i najważniejsze wnioski
Web scraping stał się umiejętnością niezbędną dla zespołów opartych na danych. Puppeteer daje Ci możliwość wyciągania danych nawet z najbardziej dynamicznych, ciężkich od JavaScriptu stron — ale wymaga pewnych umiejętności kodowania i regularnego utrzymania. Dla użytkowników biznesowych, którzy chcą ominąć kod i od razu przejść do danych, Thunderbit oferuje alternatywę no-code opartą na AI, która jest szybka, elastyczna i zaskakująco solidna.
To, co bym polecił:
- Jeśli jesteś techniczny i potrzebujesz głębokiej personalizacji, zacznij od Puppeteer.
- Jeśli zależy Ci na szybkości, prostocie i mniejszym utrzymaniu, wypróbuj Thunderbit (świetnym punktem startowym jest darmowe rozszerzenie Chrome).
- Dla większości zespołów połączenie obu narzędzi pokryje 99% potrzeb związanych z danymi webowymi.
Chcesz zobaczyć więcej takich poradników? Sprawdź blog Thunderbit, gdzie znajdziesz tutoriale, porównania i najnowsze informacje o web scrapingu wspieranym przez AI.
Wypróbuj Thunderbit AI Web Scraper Get Started Free
FAQ
1. Czym jest Puppeteer scraper i dlaczego używa się go do web scrapingu?
Puppeteer to biblioteka Node.js, która pozwala sterować przeglądarką Chrome w trybie headless za pomocą JavaScriptu. Stosuje się ją do web scrapingu, ponieważ potrafi ładować dynamiczne treści, symulować działania użytkownika i wyciągać dane ze stron, z którymi tradycyjne scrapery sobie nie radzą.
2. Jak Puppeteer wypada na tle Selenium i Thunderbit?
Selenium działa z wieloma przeglądarkami i językami, ale jest cięższy. Puppeteer jest zoptymalizowany pod Chrome/Node.js i w wielu zadaniach scrapingu działa szybciej. Thunderbit z kolei to no-code, AI-powered tool, który pozwala osobom nietechnicznym pobierać dane kilkoma kliknięciami.
3. Jakie są główne korzyści biznesowe web scrapingu w Puppeteer?
Automatyzacja zbierania danych oszczędza czas, zmniejsza liczbę błędów i zapewnia wgląd w czasie rzeczywistym dla sprzedaży, marketingu, operacji i innych działów. Zastosowania obejmują wszystko — od generowania leadów po monitorowanie cen i badania rynku.
4. Jakie są największe wyzwania związane ze scrapingiem w Puppeteer?
Największe wyzwania to obsługa dynamicznych treści, unikanie blokad anty-botowych oraz utrzymanie skryptów, gdy strony się zmieniają. Trzeba pisać kod do zarządzania czekaniem, symulowania interakcji i obsługi błędów.
5. Kiedy powinienem użyć Thunderbit zamiast Puppeteer?
Wybierz Thunderbit, jeśli chcesz uniknąć kodowania, potrzebujesz szybkich wyników albo chcesz odciążyć osoby nietechniczne w zespole. To idealne narzędzie do standardowych zadań scrapingu, projektów z krótkim terminem realizacji albo sytuacji, gdy po prostu chcesz wyeksportować dane do Excel lub Google Sheets przy minimalnym wysiłku.
Gotowy wypróbować sprytniejszy sposób na scraping? Pobierz Thunderbit albo zgłębiaj temat dzięki kolejnym poradnikom na blogu Thunderbit. Miłego scrapingu!
Dowiedz się więcej
- Czym jest Puppeteer? Kompleksowy przewodnik dla początkujących
- Puppeteer kontra Selenium: czym jest i jakie są alternatywy dla Playwright
- Jak opanować JavaScript crawling: przewodnik dla początkujących
- Przewodnik krok po kroku po web scrapingu z użyciem JavaScriptu
- Jak scrapować dynamiczne strony internetowe: kompletny przewodnik


