Puppeteer do web scrapingu: przewodnik krok po kroku

Ostatnia aktualizacja: May 22, 2026
 Puppeteer scraper web scraping step-by-step guide title with browser window illustration on a spider web.

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

puppeteer-scraper-data-extraction-automation.png 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życiaKto zyskujeWpływ / ROI
Generowanie leadówSprzedaż, rozwój biznesuAutomatyzacja budowania list prospectów; oszczędność 8+ godzin tygodniowo na handlowca (case study)
Monitorowanie cenE-commerce, operacje produktuŚledzenie konkurencji w czasie rzeczywistym; jedna firma zaoszczędziła 3,8 mln USD rocznie (source)
Badania rynkuMarketing, strategia, finanse67% doradców inwestycyjnych korzysta z danych pozyskanych z web scrapingu; w niektórych przypadkach ROI sięga nawet 890% (source)
Agregacja ofert nieruchomościAgenci, analitycyScraping 50+ stron ofert w kilka minut, a nie godzin (source)
Śledzenie zgodnościOperacje, dział prawnyAutomatyczne 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:

CzynnikPuppeteer (kod)Thunderbit (no-code, AI)
Łatwość użyciaWymaga znajomości JavaScriptu i DOMKlikasz i wskazujesz, AI sugeruje pola
Szybkość wdrożeniaOd kilku godzin do kilku dni przy złożonych zadaniachMinuty — instalujesz i działasz
Kontrola / elastycznośćMaksymalna: możesz napisać dowolną logikę i zintegrować ją z innym kodemWysoka w standardowych przypadkach; mniej odpowiedni do bardzo niestandardowych workflow
Dynamiczne treściRęczne skrypty do czekania, kliknięć i przewijaniaWbudowane AI automatycznie obsługuje dynamiczne treści, paginację i podstrony
UtrzymanieTo Ty utrzymujesz skrypty — aktualizujesz je, gdy strona się zmieniaAI dopasowuje się do zmian układu; mniejszy nakład utrzymania po stronie użytkownika
Eksport danychMusisz napisać własną logikę eksportuEksport jednym kliknięciem do Excel, Sheets, Notion, Airtable, CSV, JSON
Najlepsze dlaProgramistów, bardzo niestandardowych lub dużych projektów scrapinguUżytkowników biznesowych, projektów wymagających szybkiej realizacji, zespołów nietechnicznych
KosztDarmowy (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

scraping-project-checklist-steps.png Oto moja sprawdzona lista kontrolna dla płynnego projektu scrapingu w Puppeteer:

  1. Określ cele: Jakich danych potrzebujesz? Gdzie się znajdują?
  2. Przeanalizuj stronę: Czy jest dynamiczna? Czy wymaga logowania? Czy ma zabezpieczenia anty-bot?
  3. Skonfiguruj środowisko: Node.js, Puppeteer i ewentualne biblioteki pomocnicze.
  4. Napisz proof of concept: Zacznij od jednej strony, dopracuj selektory.
  5. Obsłuż dynamiczne treści: Użyj waitForSelector, symuluj kliknięcia i przewijanie, jeśli trzeba.
  6. Dodaj paginację lub pętle: Pobierz wszystkie strony, nie tylko jedną.
  7. Wdróż taktyki antyblokujące: Losuj opóźnienia, ustaw realistyczny User-Agent, jeśli trzeba użyj proxy.
  8. Eksportuj i zweryfikuj dane: Zapisz do JSON/CSV, sprawdź kompletność.
  9. Zoptymalizuj i obsłuż błędy: Dodaj try/catch, loguj postępy, łagodnie obsługuj brakujące dane.
  10. 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

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.
Topics
Puppeteer scraperPuppeteer web scraping
Spis treści

Zbierz dane ze strony, po prostu o to prosząc

Powiedz, czego potrzebujesz, prostym angielskim. A najlepiej: nie mów nic.

Wypróbuj Thunderbit darmowe
Wyodrębniaj dane dzięki AI
Łatwo przenoś dane do Google Sheets, Airtable lub Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week