Puppeteer til webscraping: En trin-for-trin-guide

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

Hvis du nogensinde har prøvet at hente data fra en hjemmeside, der indlæser indhold, mens du scroller, gemmer priser bag et login eller ser ud til at ændre layout hver anden uge, ved du, at det er en reel kamp. Statiske scrapers er bare ikke nok længere. Faktisk bruger over 67% af amerikanske investeringsrådgivere nu webscraping til alternative data, og 81% af amerikanske detailhandlere automatiserer overvågning af konkurrenters priser. Men det vigtige er dette: En stor del af de data ligger på dynamiske sider, der indlæses med JavaScript og er gemt bag brugerinteraktioner. Det er her, headless browser-automatisering – og værktøjer som Puppeteer – kommer ind i billedet.

Som én, der i årevis har bygget automatiserings- og AI-værktøjer (og ja, også hentet min del af hjemmesider for salgs- og driftsteams), har jeg selv set, hvordan Puppeteer kan åbne for data, som traditionelle scrapers overser. Men jeg har også set, hvordan kodningen kan blive en stopklods for forretningsbrugere. Derfor gennemgår jeg i denne guide præcist, hvad en Puppeteer scraper er, hvordan du bruger den til webscraping, og hvornår det måske giver mere mening at vælge noget endnu enklere – som Thunderbit, vores AI-drevne, no-code web scraper.

Hvad er en Puppeteer Scraper? Et hurtigt overblik

puppeteer-scraper-data-extraction-automation.png Lad os begynde med det grundlæggende. Puppeteer er et open source Node.js-bibliotek fra Google, som lader dig styre en headless Chrome- eller Chromium-browser med JavaScript. Kort sagt: Det er som at have en robot, der kan åbne websider, klikke på knapper, udfylde formularer, scrolle og – vigtigst af alt – hente data, alt sammen uden at vise noget på skærmen.

Hvad gør Puppeteer særligt?

  • Det kan gengive dynamisk indhold – det vil sige, at det venter på, at JavaScript er indlæst, ligesom en rigtig bruger.
  • Det kan simulere brugerhandlinger: klikke, skrive, scrolle og endda håndtere pop-ups.
  • Det er perfekt til at scrape sider, hvor data først vises efter interaktion, som e-handelslister, sociale feeds eller dashboards.

Hvordan står det i forhold til andre værktøjer?

  • Selenium: Browserautomatiseringens original. Det virker med mange browsere og sprog, men er tungere og lidt mere gammeldags. Det er stærkt til test på tværs af browsere, men Puppeteer er mere smidigt til Chrome/Node.js-projekter.
  • Thunderbit: Her bliver jeg begejstret. Thunderbit er en no-code, AI-drevet web scraper, der kører i din browser. I stedet for at skrive scripts klikker du bare på “AI Suggest Fields” og lader AI’en finde ud af, hvad der skal udtrækkes. Det er perfekt til forretningsbrugere, der vil have resultater uden kode (mere om det senere).

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

Hvorfor Puppeteer webscraping er vigtigt for forretningsbrugere

Hvad er data scraping, og hvordan gør man det i 2026 Get Started Free

Lad os være ærlige: webscraping er ikke længere kun for hackere eller data scientists. Salg, drift, marketing og endda ejendomsteams bruger webdata til at komme foran. Og når så meget forretningskritisk information er låst bag dynamiske sider, er Puppeteer ofte nøglen til at få adgang til den.

Her er nogle eksempler fra den virkelige verden:

Use CaseWho BenefitsImpact / ROI
LeadgenereringSalg, forretningsudviklingAutomatisér opbygningen af prospektlister; spar over 8 timer om ugen pr. sælger (case study)
PrisovervågningE-handel, produktdriftOvervåg konkurrenter i realtid; én stor virksomhed sparede 3,8 mio. dollars om året (source)
MarkedsresearchMarketing, strategi, finans67% af investeringsrådgivere bruger webscrappede data; i nogle tilfælde op til 890% ROI (source)
Aggregation af ejendomsdataMæglere, analytikereScrape 50+ ejendomssider på få minutter, ikke timer (source)
OverholdelseskontrolDrift, juraAutomatisér overvågning; én forsikringsvirksomhed undgik bøder på 50 mio. dollars (source)

Og lad os ikke glemme: over 40% af medarbejdere bruger en fjerdedel af deres uge på gentagne opgaver som dataindsamling. At automatisere det med webscraping er ikke bare rart at have – det er en konkurrencefordel.

Kom i gang: Sådan sætter du din Puppeteer scraper op

Klar til at smøge ærmerne op? Her er, hvordan du får Puppeteer op at køre på under 10 minutter (forudsat at du er okay med lidt JavaScript):

1. Installer Node.js
Puppeteer kører på Node.js. Hent den nyeste LTS-version fra nodejs.org.

2. Opret en ny projektmappe
Åbn din terminal og kør:

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

3. Installer Puppeteer

npm install puppeteer

Det henter også en kompatibel version af Chromium (omkring 100 MB).

4. Opret dit første script
Lav en fil, der hedder 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('Page title:', title);
  await browser.close();
})();

Kør det med:

node scrape.js

Hvis du ser “Page title: Example Domain”, så tillykke – du har lige automatiseret Chrome!

Sådan bygger du dit første Puppeteer webscraping-script

Lad os gøre det praktisk. Forestil dig, at du vil scrape citater fra quotes.toscrape.com (en demoside for scrapers).

Trin 1: Gå til siden

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

Trin 2: Udtræk 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);

Trin 3: Håndter pagination

let hasNext = true;
let allQuotes = [];
while (hasNext) {
  // Udtræk citater som ovenfor
  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;
  }
}

Trin 4: Gem som JSON

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

Og så er du der – en grundlæggende Puppeteer scraper, der navigerer, udtrækker, paginerer og gemmer data.

Avancerede Puppeteer-scraperteknikker: Håndtering af dynamisk indhold

De fleste websites i den virkelige verden er ikke bare en simpel statisk liste. Sådan håndterer du det svære:

1. Vent på dynamiske elementer

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

Det sikrer, at det indhold, du vil hente, er indlæst, før du prøver at gribe det.

2. Simulér brugerhandlinger

  • Klik på en knap: await page.click('#load-more');
  • Skriv i et felt: await page.type('#search', 'laptop');
  • Scroll ved endless scroll:
    // Bemærk: page.waitForTimeout blev fjernet i Puppeteer v22. Brug i stedet en almindelig 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. Håndter logins**
```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åndter AJAX-indlæste data Nogle gange ligger dataene ikke i DOM’en, men kommer fra et API-kald. Du kan opfange netværksresponser med:

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

Virkeligt eksempel: Scraping af produktdata fra en e-handelsside

Lad os samle det hele. Forestil dig, at du vil scrape produktnavne, priser og billeder fra en (demo) e-handelsside efter login.

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

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

  // Trin 1: Log ind
  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' });

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

  // Trin 3: Udtræk 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 || ''
    }));
  });

  // Trin 4: Gem som JSON
  fs.writeFileSync('products.json', JSON.stringify(products, null, 2));

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

Dette script logger ind, navigerer, scraper og gemmer – alt sammen automatisk. Til mere avancerede behov kan du tilføje loops for pagination eller endda klikke ind på hvert produkt for flere detaljer.

Thunderbit: Gør Puppeteer scraperen enklere med AI

Prøv Thunderbit Chrome-udvidelsen Scrape enhver hjemmeside med AI på 2 klik. Get Started Free

Hvis du er nået hertil og tænker: “Det er smart, men jeg har ikke lyst til at skrive kode hver gang, jeg skal bruge et nyt datasæt,” så er du ikke alene. Det er præcis derfor, vi byggede Thunderbit.

Hvad gør Thunderbit anderledes?

  • Ingen kode nødvendig: Installer bare Thunderbit Chrome-udvidelsen, åbn siden, du vil scrape, og klik på “AI Suggest Fields.”
  • AI-drevet feltgenkendelse: Thunderbit læser siden og foreslår de bedste kolonner at udtrække – som “Produktnavn”, “Pris”, “Billede” osv.
  • Håndterer dynamisk indhold: Endless scroll, pop-ups og undersider? Thunderbits AI kan klare det, klikke sig gennem pagination eller endda besøge hvert produkts detaljeside for at berige dine data.
  • Øjeblikkelig eksport: Send dine data direkte til Excel, Google Sheets, Notion eller Airtable med ét klik. Ingen ekstra betaling for eksport.
  • Skabeloner til populære sites: Skal du scrape Amazon, Zillow eller LinkedIn? Thunderbit har færdige skabeloner – ingen opsætning nødvendig.
  • Cloud- eller browserscraping: Til store opgaver kan Thunderbit scrape op til 50 sider ad gangen i skyen.

Jeg har set brugere gå fra “Jeg ville ønske, jeg kunne få de her data” til “Her er mit regneark” på under fem minutter. Og det bedste? Ikke mere bekymring for scripts, der går i stykker, når hjemmesiden ændrer sig – Thunderbits AI tilpasser sig løbende.

Prøv Thunderbit AI Web Scraper gratis

Puppeteer vs. Thunderbit: Sådan vælger du det rigtige webscraping-værktøj

Så hvad skal du vælge? Her er, hvordan jeg plejer at dele det op for teams:

FactorPuppeteer (Code)Thunderbit (No-Code, AI)
Ease of UseKræver JavaScript- og DOM-kendskabKlik og peg, AI foreslår felter
Setup SpeedTimer til dage ved komplekse opgaverMinutter – installer og gå i gang
Control/FlexibilityMaksimalt: script enhver speciallogik, integrér med anden kodeHøj til standardcases; mindre egnet til meget specialiserede workflows
Dynamic ContentManuel scripting til ventetid, klik og scrollsIndbygget AI håndterer dynamisk indhold, pagination og undersider automatisk
MaintenanceDu ejer scriptsene – opdater dem, når sider ændrer sigAI tilpasser sig layoutændringer; mindre vedligeholdelse for brugeren
Data ExportSkriv selv eksportlogikkenÉt-klik-eksport til Excel, Sheets, Notion, Airtable, CSV, JSON
Best ForUdviklere, højt specialiserede eller storskala scrapesForretningsbrugere, hurtige projekter, ikke-tekniske teams
CostGratis (bortset fra din tid og evt. infrastruktur)Gratis plan tilgængelig; betalte planer via credits (se Thunderbit Pricing)

Kort sagt:

  • Brug Puppeteer, hvis du har brug for total kontrol, har kodningsressourcer eller skal integrere scraping i en større app.
  • Brug Thunderbit, hvis du vil have resultater hurtigt, ikke vil kode eller vil give ikke-tekniske kolleger mulighed for at arbejde selvstændigt.

Helt ærligt har jeg set teams bruge begge dele: Thunderbit til hurtige gevinster og prototyper, Puppeteer til dybe integrationer eller edge cases.

Trin-for-trin tjekliste: Sådan kører du et succesfuldt Puppeteer webscraping-projekt

scraping-project-checklist-steps.png Her er min faste tjekliste til et smidigt Puppeteer-scrapingprojekt:

  1. Definér dine mål: Hvilke data har du brug for? Hvor ligger de?
  2. Analyser siden: Er den dynamisk? Kræver den login? Er der anti-bot-foranstaltninger?
  3. Sæt dit miljø op: Node.js, Puppeteer og eventuelle hjælpelibraries.
  4. Skriv et proof of concept: Start med én side, og få selektorerne rigtige.
  5. Håndtér dynamisk indhold: Brug waitForSelector, og simulér klik/scrolls efter behov.
  6. Tilføj pagination eller loops: Scrape alle sider, ikke kun én.
  7. Implementér anti-blokerings-taktikker: Tilfældiggør forsinkelser, sæt en rigtig User-Agent, brug proxies hvis nødvendigt.
  8. Eksportér og validér data: Gem som JSON/CSV, og tjek for fuldstændighed.
  9. Optimer og håndtér fejl: Tilføj try/catch, log fremskridt, og håndtér manglende data elegant.
  10. Overvåg og vedligehold: Sider ændrer sig – vær klar til at opdatere dit script.

Tips til fejlfinding:

  • Hvis selektorer returnerer null, så tjek HTML’en igen og brug waits.
  • Hvis du bliver blokeret, så sænk hastigheden, skift IP’er eller brug stealth-plugins.
  • Hvis dit script crasher, så tjek for memory leaks eller ubehandlede exceptions.

Konklusion og vigtigste pointer

Webscraping er blevet en uundværlig færdighed for datadrevne teams. Puppeteer giver dig kraften til at hente data fra selv de mest dynamiske, JavaScript-tunge sider – men det kræver noget kodningshåndelag og løbende vedligeholdelse. For forretningsbrugere, der vil springe koden over og gå direkte til dataene, tilbyder Thunderbit et AI-drevet, no-code alternativ, som er hurtigt, fleksibelt og overraskende robust.

Det ville jeg anbefale:

  • Hvis du er teknisk og har brug for dyb tilpasning, så start med Puppeteer.
  • Hvis du vil have hastighed, enkelhed og mindre vedligeholdelse, så prøv Thunderbit (den gratis Chrome-udvidelse er et godt sted at starte).
  • For de fleste teams vil en kombination af begge dække 99% af behovene for webdata.

Vil du se flere guides som denne? Tjek Thunderbit Blog for tutorials, sammenligninger og det nyeste inden for AI-drevet webscraping.

Prøv Thunderbit AI Web Scraper Get Started Free

FAQ

1. Hvad er en Puppeteer scraper, og hvorfor bruges den til webscraping?
Puppeteer er et Node.js-bibliotek, som lader dig styre en headless Chrome-browser med JavaScript. Det bruges til webscraping, fordi det kan indlæse dynamisk indhold, simulere brugerhandlinger og hente data fra sider, som traditionelle scrapers ikke kan håndtere.

2. Hvordan står Puppeteer i forhold til Selenium og Thunderbit?
Selenium virker med flere browsere og sprog, men er tungere. Puppeteer er strømlinet til Chrome/Node.js og er hurtigere til mange scrapingopgaver. Thunderbit er derimod et no-code, AI-drevet værktøj, som lader ikke-tekniske brugere scrape data med få klik.

3. Hvad er de vigtigste forretningsfordele ved Puppeteer webscraping?
Automatisering af dataindsamling sparer tid, reducerer fejl og giver indsigt i realtid til salg, marketing, drift og meget mere. Brugsscenarier spænder fra leadgenerering til prisovervågning og markedsresearch.

4. Hvad er de største udfordringer ved Puppeteer scraping?
De største udfordringer er at håndtere dynamisk indhold, undgå anti-bot-blokeringer og vedligeholde scripts, når websites ændrer sig. Du skal skrive kode til at styre ventetid, simulere interaktioner og håndtere fejl.

5. Hvornår bør jeg bruge Thunderbit i stedet for Puppeteer?
Brug Thunderbit, hvis du vil springe kodning over, har brug for resultater hurtigt eller vil give ikke-tekniske kolleger mere selvstændighed. Det er ideelt til standard scrapingopgaver, hurtige projekter eller når du bare vil eksportere data til Excel eller Google Sheets med minimal besvær.

Klar til at prøve en smartere måde at scrape på? Download Thunderbit eller dyk dybere ned med flere guides på Thunderbit Blog. God scraping!

Læs mere

Shuai Guan
Shuai Guan
CEO hos Thunderbit | Ekspert i AI-drevet dataautomatisering Shuai Guan er CEO hos Thunderbit og uddannet ingeniør fra University of Michigan. Med næsten ti års erfaring inden for tech og SaaS-arkitektur har han specialiseret sig i at omsætte komplekse AI-modeller til praktiske, no-code værktøjer til dataudtræk. På denne blog deler han ærlige, gennemprøvede indsigter om webscraping og automatiseringsstrategier, så du kan bygge smartere, datadrevne arbejdsgange. Når han ikke optimerer dataflows, bruger han det samme skarpe blik for detaljer i sin passion for fotografi.
Topics
Puppeteer scraperPuppeteer webscraping
Indholdsfortegnelse

Hent en webside bare ved at spørge

Sig, hvad du har brug for, på helt almindeligt engelsk. Eller endnu bedre: sig ingenting.

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