Puppeteer for webskraping: En trinnvis guide

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

Hvis du noen gang har prøvd å hente data fra et nettsted som laster inn innhold mens du scroller, skjuler priser bak innlogging, eller virker som om layouten endrer seg annenhver uke, vet du at det kan være en skikkelig kamp. Statiske scrapers holder rett og slett ikke lenger. Faktisk er over 67 % av amerikanske investeringsrådgivere nå avhengige av webskraping for alternative data, og 81 % av amerikanske detaljhandlere automatiserer overvåking av konkurrentpriser. Men her er det avgjørende poenget: mye av disse dataene ligger på dynamiske nettsteder, lastet inn av JavaScript og skjult bak brukerinteraksjoner. Det er her headless browser-automatisering — og verktøy som Puppeteer — kommer inn.

Som en som har brukt mange år på å bygge automasjon- og AI-verktøy (og ja, skrapt sin del av nettsteder for salgs- og driftsteam), har jeg sett med egne øyne hvordan Puppeteer kan låse opp data som tradisjonelle scrapers går glipp av. Men jeg har også sett hvordan kodingsarbeidet kan bli en showstopper for forretningsbrukere. Så i denne guiden skal jeg gå gjennom nøyaktig hva en Puppeteer scraper er, hvordan du bruker den til webskraping, og når det kan være lurt å velge noe enda enklere — som Thunderbit, vår AI-drevne, kodefrie webskraper.

Hva er en Puppeteer-scraper? En rask oversikt

puppeteer-scraper-data-extraction-automation.png La oss starte med det grunnleggende. Puppeteer er et åpen kildekode-bibliotek for Node.js fra Google som lar deg styre en headless Chrome- eller Chromium-nettleser med JavaScript. På vanlig norsk: det er som å ha en robot som kan åpne nettsider, klikke på knapper, fylle ut skjemaer, scrolle og — viktigst av alt — hente ut data, alt uten at noe vises på skjermen.

Hva gjør Puppeteer spesielt?

  • Det kan gjengi dynamisk innhold — altså vente på at JavaScript lastes inn, akkurat som en ekte bruker.
  • Det kan simulere brukerhandlinger: klikke, skrive, scrolle og til og med håndtere popup-vinduer.
  • Det er perfekt for å skrape nettsteder der data bare vises etter interaksjon, som nettbutikklister, sosiale strømmer eller dashbord.

Hvordan står det seg mot andre verktøy?

  • Selenium: Den opprinnelige klassikeren innen nettleserautomatisering. Fungerer med mange nettlesere og språk, men er tyngre og litt mer gammeldags. Flott for testing på tvers av nettlesere, men Puppeteer er raskere og smidigere for Chrome/Node.js-prosjekter.
  • Thunderbit: Her blir jeg begeistret. Thunderbit er en kodefri, AI-drevet webskraper som ligger i nettleseren din. I stedet for å skrive skript klikker du bare på «AI-forslå felt», og lar AI-en finne ut hva som skal hentes ut. Perfekt for forretningsbrukere som vil ha resultater uten kode (mer om dette senere).

Kort sagt: Puppeteer = maksimal kontroll (hvis du koder). Thunderbit = maksimal bekvemmelighet (hvis du ikke vil kode).

Hvorfor Puppeteer-webskraping er viktig for forretningsbrukere

Hva er dataskraping, og hvordan gjør du det i 2026 Get Started Free

La oss være ærlige: webskraping er ikke bare for hackere eller dataforskere lenger. Salg, drift, markedsføring og til og med eiendomsteam bruker webdata for å ligge foran. Og med så mye forretningskritisk informasjon låst bak dynamiske nettsteder, er Puppeteer ofte nøkkelen til å få tak i den.

Her er noen eksempler fra virkeligheten:

BruksområdeHvem får nytteEffekt / avkastning (ROI)
Lead-genereringSalg, forretningsutviklingAutomatiser bygging av prospektlister; spar 8+ timer i uken per selger (casestudie)
PrisovervåkingE-handel, produktdriftKonkurrentsporing i sanntid; én stor aktør sparte 3,8 millioner dollar i året (kilde)
MarkedsundersøkelserMarkedsføring, strategi, økonomi67 % av investeringsrådgivere bruker webskrapte data; opptil 890 % ROI i noen tilfeller (kilde)
Samling av eiendomsdataMeglere, analytikereSkrap 50+ eiendomssider på minutter, ikke timer (kilde)
SamsvarsovervåkingDrift, juridiskAutomatiser overvåking; ett forsikringsselskap unngikk bøter på 50 millioner dollar (kilde)

Og la oss ikke glemme: over 40 % av ansatte bruker en fjerdedel av arbeidsuken på repetitive oppgaver som datainnsamling. Å automatisere dette med webskraping er ikke bare kjekt å ha — det er et konkurransefortrinn.

Kom i gang: Sett opp Puppeteer-scraperen din

Klar til å brette opp ermene? Slik får du Puppeteer i gang på under 10 minutter (forutsatt at du er komfortabel med litt JavaScript):

1. Installer Node.js
Puppeteer kjører på Node.js. Last ned den nyeste LTS-versjonen fra nodejs.org.

2. Opprett en ny prosjektmappe
Åpne terminalen og kjør:

mkdir puppeteer-scraper-demo
cd puppeteer-scraper-demo
npm init -y

3. Installer Puppeteer

npm install puppeteer

Dette laster også ned en kompatibel versjon av Chromium (ca. 100 MB).

4. Lag ditt første skript
Opprett en fil som heter 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('Sidetittel:', title);
  await browser.close();
})();

Kjør det med:

node scrape.js

Hvis du ser «Sidetittel: Example Domain», gratulerer — du har akkurat automatisert Chrome!

Bygg ditt første Puppeteer-webskrapingsskript

La oss gjøre det praktisk. Si at du vil skrape sitater fra quotes.toscrape.com (et demosted for scrapers).

Steg 1: Gå til siden

await page.goto('http://quotes.toscrape.com', { waitUntil: 'networkidle0' });

Steg 2: Hent ut data

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);

Steg 3: Håndter paginering

let hasNext = true;
let allQuotes = [];
while (hasNext) {
  // Hent ut sitater som over
  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;
  }
}

Steg 4: Lagre til JSON

const fs = require('fs');
fs.writeFileSync('quotes.json', JSON.stringify(allQuotes, null, 2));

Og der har du det — en enkel Puppeteer-scraper som navigerer, henter ut, blar gjennom sider og lagrer data.

Avanserte Puppeteer-scraperteknikker: Håndtering av dynamisk innhold

De fleste nettsteder i den virkelige verden er ikke like enkle som en statisk liste. Slik takler du det vanskeligere stoffet:

1. Vent på dynamiske elementer

await page.waitForSelector('.product-list-item');

Dette sikrer at innholdet du vil ha, er lastet inn før du prøver å hente det.

2. Simulere brukerhandlinger

  • Klikk på en knapp: await page.click('#load-more');
  • Skriv inn i et felt: await page.type('#search', 'laptop');
  • Scroll for uendelig scroll:
    // Merk: page.waitForTimeout ble fjernet i Puppeteer v22. Bruk en vanlig promise i stedet.
    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. Håndtere innlogginger**
```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. Håndtere data lastet via AJAX Noen ganger ligger ikke dataene i DOM-en, men kommer fra et API-kall. Du kan avlytte nettverksresponser med:

page.on('response', async response => {
  if (response.url().includes('/api/products')) {
    const data = await response.json();
    // Behandle data
  }
});

Eksempel fra virkeligheten: Skraping av produktdata fra et nettbutikknettsted

La oss sette alt sammen. Tenk deg at du vil skrape produktnavn, priser og bilder fra et (demo)nettbutikknettsted etter innlogging.

const puppeteer = require('puppeteer');
const fs = require('fs');

(async () => {
  const browser = await puppeteer.launch({ headless: true });
  const page = await browser.newPage();

  // Steg 1: Logg inn
  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' });

  // Steg 2: Gå til kategorisiden
  await page.goto('https://exampleshop.com/category/laptops', { waitUntil: 'networkidle0' });

  // Steg 3: Hent ut produkter
  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 || ''
    }));
  });

  // Steg 4: Lagre til JSON
  fs.writeFileSync('products.json', JSON.stringify(products, null, 2));

  await browser.close();
})();

Dette skriptet logger inn, navigerer, skraper og lagrer — helt automatisk. For mer avanserte behov kan du legge til løkker for paginering eller til og med klikke inn på hvert produkt for flere detaljer.

Thunderbit: Gjør Puppeteer-scraping enklere med AI

Prøv Thunderbit Chrome-utvidelsen Skrap hvilket som helst nettsted med AI på 2 klikk. Get Started Free

Hvis du har kommet så langt og tenker: «Dette er kult, men jeg vil ikke skrive kode hver gang jeg trenger et nytt datasett», så er du ikke alene. Det er nettopp derfor vi bygde Thunderbit.

Hva gjør Thunderbit annerledes?

  • Ingen kode nødvendig: Bare installer Thunderbit Chrome-utvidelsen, åpne siden du vil skrape, og klikk «AI-forslå felt».
  • AI-drevet feltgjenkjenning: Thunderbit leser siden og foreslår de beste kolonnene å hente ut — som «Produktnavn», «Pris», «Bilde» osv.
  • Håndterer dynamisk innhold: Uendelig scroll, popup-vinduer og undersider? Thunderbits AI kan håndtere det, klikke seg gjennom paginering eller til og med besøke produktsidene for å berike dataene dine.
  • Umiddelbar eksport: Send dataene rett til Excel, Google Sheets, Notion eller Airtable med ett klikk. Ingen ekstra kostnad for eksport.
  • Mal for populære nettsteder: Trenger du å skrape Amazon, Zillow eller LinkedIn? Thunderbit har ferdige maler — ingen oppsett nødvendig.
  • Sky- eller nettleserskraping: For større oppgaver kan Thunderbit skrape opptil 50 sider samtidig i skyen.

Jeg har sett brukere gå fra «Jeg skulle ønske jeg kunne få tak i disse dataene» til «Her er regnearket mitt» på under fem minutter. Og det beste? Du slipper å bekymre deg for skript som ryker når nettstedet endrer seg — Thunderbits AI tilpasser seg fortløpende.

Prøv Thunderbit AI Web Scraper gratis

Puppeteer vs. Thunderbit: Velg riktig webskrapingsverktøy

Så, hva bør du bruke? Slik pleier jeg å bryte det ned for team:

FaktorPuppeteer (kode)Thunderbit (kodefri, AI)
BrukervennlighetKrever JavaScript- og DOM-kunnskapPek-og-klikk, AI foreslår feltene
OppsetthastighetTimer til dager for komplekse oppgaverMinutter — bare installer og kjør
Kontroll/fleksibilitetMaksimal: skriv all tilpasset logikk, integrer med annen kodeHøy for standardtilfeller; mindre egnet for svært skreddersydde arbeidsflyter
Dynamisk innholdManuell koding for venting, klikk og scrollingInnebygd AI håndterer dynamisk innhold, paginering og undersider automatisk
VedlikeholdDu eier skriptene — oppdater når nettsteder endrer segAI-en tilpasser seg layoutendringer; mindre vedlikehold for brukeren
DataeksportDu må skrive egen eksportlogikkÉnklikkseksport til Excel, Sheets, Notion, Airtable, CSV, JSON
Best forUtviklere, svært skreddersydde eller store skrapingerForretningsbrukere, prosjekter med kort leveringstid, ikke-tekniske team
KostnadGratis (bortsett fra tiden din og eventuell infrastruktur)Gratisnivå tilgjengelig; betalte planer basert på kreditter (se Thunderbit-priser)

Kort fortalt:

  • Bruk Puppeteer hvis du trenger total kontroll, har kodekompetanse, eller vil integrere skraping i en større app.
  • Bruk Thunderbit hvis du vil ha raske resultater, ikke vil kode, eller vil gjøre det mulig for ikke-tekniske kolleger å bruke løsningen.

Ærlig talt har jeg sett team bruke begge: Thunderbit for raske gevinster og prototyping, Puppeteer for dype integrasjoner eller spesialtilfeller.

Sjekkliste steg for steg: Slik lykkes du med et Puppeteer-webskrapingsprosjekt

scraping-project-checklist-steps.png Her er sjekklisten jeg bruker for et smidig Puppeteer-skrapingsprosjekt:

  1. Definer målene dine: Hvilke data trenger du? Hvor ligger de?
  2. Analyser nettstedet: Er det dynamisk? Krever det innlogging? Finnes det anti-bot-tiltak?
  3. Sett opp miljøet ditt: Node.js, Puppeteer og eventuelle hjelpebiblioteker.
  4. Skriv en proof of concept: Start med én side, få selektorene riktige.
  5. Håndter dynamisk innhold: Bruk waitForSelector, simuler klikk/scroll ved behov.
  6. Legg til paginering eller løkker: Skrap alle sider, ikke bare én.
  7. Implementer tiltak mot blokkering: Tilfeldiggjør forsinkelser, sett en ekte User-Agent, bruk proxyer hvis nødvendig.
  8. Eksporter og valider data: Lagre til JSON/CSV, sjekk at alt er med.
  9. Optimaliser og håndter feil: Legg til try/catch, loggfør fremdrift, håndter manglende data på en smidig måte.
  10. Overvåk og vedlikehold: Nettsteder endrer seg — vær klar til å oppdatere skriptet ditt.

Feilsøkingstips:

  • Hvis selektorer returnerer null, dobbeltsjekk HTML-en og bruk venting.
  • Hvis du blir blokkert, senk tempoet, roter IP-er, eller bruk stealth-plugins.
  • Hvis skriptet ditt krasjer, se etter minnelekkasjer eller ubehandlede unntak.

Konklusjon og viktige læringspunkter

Webskraping har blitt en nødvendig ferdighet for datadrevne team. Puppeteer gir deg kraften til å hente data fra selv de mest dynamiske, JavaScript-tunge nettstedene — men det krever noe kodekompetanse og løpende vedlikehold. For forretningsbrukere som vil hoppe over koden og gå rett til dataene, tilbyr Thunderbit et AI-drevet, kodefritt alternativ som er raskt, fleksibelt og overraskende robust.

Dette vil jeg anbefale:

  • Hvis du er teknisk og trenger dyp tilpasning, start med Puppeteer.
  • Hvis du vil ha fart, enkelhet og mindre vedlikehold, prøv Thunderbit (den gratis Chrome-utvidelsen er et flott sted å begynne).
  • For de fleste team vil en kombinasjon av begge dekke 99 % av behovene for webdata.

Vil du se flere guider som denne? Sjekk ut Thunderbit-bloggen for veiledninger, sammenligninger og det nyeste innen AI-drevet webskraping.

Prøv Thunderbit AI Web Scraper Get Started Free

Vanlige spørsmål

1. Hva er en Puppeteer-scraper, og hvorfor brukes den til webskraping?
Puppeteer er et Node.js-bibliotek som lar deg styre en headless Chrome-nettleser med JavaScript. Det brukes til webskraping fordi det kan laste dynamisk innhold, simulere brukerhandlinger og hente data fra nettsteder som tradisjonelle scrapers ikke klarer.

2. Hvordan står Puppeteer seg mot Selenium og Thunderbit?
Selenium fungerer med flere nettlesere og språk, men er tyngre. Puppeteer er strømlinjeformet for Chrome/Node.js og er raskere for mange skrapingsoppgaver. Thunderbit, derimot, er et kodefritt, AI-drevet verktøy som lar ikke-tekniske brukere hente data med bare noen få klikk.

3. Hva er de viktigste forretningsfordelene ved Puppeteer-webskraping?
Å automatisere datainnsamling sparer tid, reduserer feil og gir innsikt i sanntid for salg, markedsføring, drift og mer. Bruksområdene spenner fra lead-generering til prisovervåking og markedsundersøkelser.

4. Hva er de største utfordringene med Puppeteer-skraping?
De største utfordringene er å håndtere dynamisk innhold, unngå anti-bot-blokkering og vedlikeholde skript når nettsteder endrer seg. Du må skrive kode for å håndtere venting, simulere interaksjoner og ta feil på en god måte.

5. Når bør jeg bruke Thunderbit i stedet for Puppeteer?
Bruk Thunderbit hvis du vil slippe koding, trenger resultater raskt eller vil gi ikke-tekniske kolleger et verktøy de faktisk kan bruke. Det er ideelt for standard skrapingsoppgaver, prosjekter med kort leveringstid, eller når du bare vil eksportere data til Excel eller Google Sheets med minst mulig friksjon.

Klar til å prøve en smartere måte å skrape på? Last ned Thunderbit eller gå dypere inn i flere guider på Thunderbit-bloggen. God skraping!

Les mer

Shuai Guan
Shuai Guan
CEO i Thunderbit | Ekspert på AI-drevet dataautomatisering Shuai Guan er CEO i Thunderbit og utdannet ingeniør fra University of Michigan. Med nærmere ti års erfaring innen teknologi og SaaS-arkitektur, spesialiserer han seg på å gjøre avanserte AI-modeller om til praktiske verktøy for datauttrekk uten koding. På denne bloggen deler han ærlige, velprøvde innsikter om webskraping og automatiseringsstrategier som hjelper deg å bygge smartere, datadrevne arbeidsflyter. Når han ikke optimaliserer dataflyt, bruker han det samme skarpe blikket for detaljer i sin lidenskap for fotografi.
Topics
Puppeteer-scraperPuppeteer-webskraping
Innholdsfortegnelse

Hent en nettside bare ved å spørre

Si hva du trenger på vanlig norsk. Eller enda bedre, si ingenting i det hele tatt.

Prøv Thunderbit gratis
Hent data med AI
Overfør enkelt data til Google Sheets, Airtable eller Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week