At lave Webscraping i JavaScript, du skal bruge Node.js og et bibliotek, der passer til din målgruppe. Brug Cheerio for de statiske sider og Puppeteer Hvor Playwright så snart indholdet vises på klientsiden.
Denne vejledning viser dig trin for trin, hvordan du installerer, programmerer og kører din første scraper.
Forudsætninger for webscraping i JavaScript

Inden du skriver dit første JS-script, er to grundlæggende værktøjer nok til at komme i gang.
- Node.js : et JavaScript-kørselsmiljø open source og platformsuafhængig. Den giver dig mulighed for at køre JS-kode uden for en browser, direkte fra din konsol. Download den fra den officielle Node.js-dokumentation.
- npm (Node Package Manager) : den indbyggede pakkehåndtering i Node. Den bruges til at installere dine biblioteker med en enkelt kommando
npm install.
Enkelt gang Node.js Når du er klar, vælger du et bibliotek afhængigt af den type webside, du vil scrape. Her er de mest anvendte.
- Cheerio : perfekt til scraping af statiske sider. Den analyserer rå HTML med en syntaks, der ligner jQuery. Hun er let, hurtig og enkel, men kører ikke sidens JavaScript. Se Cheerio-dokumentationen.
- Puppeteer og Playwright : ideelle til dynamiske hjemmesider. De styrer en rigtig headless-browser (Chrome Hvor Firefox) og indlæser siden som en rigtig bruger. Se dokumentationen til Puppeteer.
Reglen er enkel: Cheerio for de statiske sider, Puppeteer Hvor Playwright så snart en hjemmeside indlæser sine data via JavaScript.
Hvordan kan jeg lave webscraping i JavaScript?
Princippet er simpelt: du henter HTML På en webside udvælger du de elementer, der interesserer dig, og udtrækker derefter dataene. Valget af værktøj afhænger af ét eneste kriterium: Er siden statisk Hvor dynamisk ?
Trin 1: Installation og konfiguration
Start med at downloade Node.js fra den officielle hjemmeside, og installer den derefter. Kontroller derefter installationen i din terminal:
node -v
npm -v
Hvis begge versioner vises, er alt i orden. Opret nu dit projekt:
mkdir my-scraping
cd my-scraping
npm init -y
Denne kommando genererer en fil package.json som viser en liste over dine afhængigheder. Nu skal du blot installere de biblioteker, der passer til dine behov.
For en statisk side (indhold, der allerede findes i den HTML-kode, som serveren returnerer), bruger axios og Cheerio :
npm install axios cheerio
For en dynamisk side (data, der indlæses via JavaScript på klientsiden, såsom React, Vue Hvor Angular), installer i stedet Puppeteer :
npm installer puppeteer
Trin 2: Oprettelse af et scraping-script
Inden du begynder at skrive dit JS-script, skal du finde de rigtige CSS-selektorer. Åbn målsiden i Chrome Hvor Firefox, højreklik på det ønskede element, og vælg derefter «Inspicer». DOM vises: På den måde kan du finde tagget og klassen (.klasse) eller brugernavnet (#id) der skal målrettes.
Scraping af en statisk side med Cheerio
Cheerio læser kun Almindelig HTML og kører ingen JS-scripts. På et websted, der vises på klientsiden, vil brugeren kun se en tom side.
// Importer biblioteker
const axios = require('axios');
const cheerio = require('cheerio');
// URL til den side, der skal skrottes
const url = "https://exemple.com";
// Hovedfunktion
asynkron funktion scrapePage() {
prøv {
// Download HTML-indhold
const { data } = await axios.get(url);
// Indlæs HTML med Cheerio
const $ = cheerio.load(data);
// Eksempel: hent alle h1-titler
const titles = [];
$("h1").each((i, elem) => {
titles.push($(elem).text().trim());
});
// Vis resultaterne
console.log("Titler fundet:", titler);
} catch (fejl) {
console.error("Fejl under scraping:", error);
}
}
// Kør scriptet
scrapePage();
Erstat https://exemple.com med den URL, du vælger, og tilpas derefter selektoren $("h1") for at finde det, der interesserer dig: $("p") for afsnittene, .klasse Hvor #id for et bestemt element. Metoden .text() henviser til textContent af elementet, svarende til jQuery på serversiden.
Scraping af en dynamisk side med Puppeteer
Puppeteer en rigtig pilot hovedløs browser og venter på, at JavaScript er færdig med at indlæse indholdet, hvor Cheerio mislykkes.
// Importer Puppeteer
const puppeteer = require("puppeteer");
// URL til den side, der skal skrottes
const url = "https://exemple.com";
asynkron funktion scrapePage() {
// Start en browser uden en grafisk grænseflade (hovedløs)
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
prøv {
// Gå til siden
await page.goto(url, { waitUntil: "networkidle2" });
// Eksempel: udtræk tekst fra alle h1-titler
const titles = await page.$$eval("h1", elements =>
elements.map(el => el.textContent.trim())
);
console.log("Titler fundet:", titler);
} catch (error) {
console.error("Fejl under scraping:", error);
} finally {
// Luk browseren
await browser.close();
}
}
// Kør scriptet
scrapePage();
Valgmuligheden waitUntil: "networkidle2" afventer afslutningen af netværksforespørgsler inden dataene hentes fra websiden.
Fase 3: Håndtering af de udtrukne data
Når dataene er hentet, kan du gemme dem i JSON til en database, eller i CSV for at åbne dem i Excel. Modulet fs er født i Node.js og kræver ingen installation. For CSV skal du blot tilføje biblioteket json2csv :
npm install json2csv
const axios = require("axios");
const cheerio = require("cheerio");
const fs = require("fs");
const { Parser } = require("json2csv");
const url = "https://exemple.com";
async function scrapeAndSave() {
try {
// Récupérer le HTML de la page
const { data } = await axios.get(url);
const $ = cheerio.load(data);
// Extraire les titres dans un tableau d'objets
const resultats = [];
$("h1").each((i, elem) => {
resultats.push({ titre: $(elem).text().trim() });
});
// Sauvegarde en JSON
fs.writeFileSync("resultats.json", JSON.stringify(resultats, null, 2), "utf-8");
console.log("Données sauvegardées dans resultats.json");
// Sauvegarde en CSV
const parser = new Parser();
const csv = parser.parse(resultats);
fs.writeFileSync("resultats.csv", csv, "utf-8");
console.log("Données sauvegardées dans resultats.csv");
} catch (error) {
console.error("Erreur lors du scraping :", error);
}
}
scrapeAndSave();
Dette JS-script klarer det hele på én gang: det henter websiden, udtrækker HTML-dataene og skriver derefter to filer. Blokken try / catch håndterer fejl for at undgå, at en tiden er gået eller en CAPTCHA får hele scraping-scriptet til at gå ned.
Bedste praksis for webscraping i JavaScript
Inden du kører dine scripts, er der nogle enkle vaner, der sikrer, at din JS-scraping fungerer effektiv, stabil og overholder brugsbetingelserne for de pågældende hjemmesider. Det er også vigtigt at sikre dig, at din Denne fremgangsmåde er lovlig afhængigt af sammenhængen.
- Respekter robots.txt-filen : Det er den gyldne regel. Inden du scraper en webside, skal du åbne
https://exemple.com/robots.txt. Hvis den pågældende sti er i Afvis, du må ikke scrape det. På den måde undgår du etiske og juridiske problemer. - Sørg for at holde afstand mellem dine forespørgsler : Overbelast ikke hjemmesiden. Vent lidt mellem hvert opkald for at være diskret og undgå at blive blokeret.
- Tilpas din User-Agent : Som udgangspunkt bliver en JS-scraper hurtigt opdaget. Med Puppeteer, definer en realistisk overskrift via
page.setUserAgent()for at efterligne en rigtig browser. - Håndtering af fejl og fastlåste situationer : indsæt dine opkald i en blok
try / catchfor at undgå, at en timeout eller en CAPTCHA får hele scriptet til at gå ned.
Hvilke alternativer bør overvejes?
Webscraping er ikke begrænset til JavaScript. Afhængigt af dit projekt kan andre sprog eller værktøjer måske bedre opfylde dine behov.
- Python : bibliotekerne Scrapy og BeautifulSoup er fantastiske til at udtrække indhold fra mange websider.
- PHP : praktisk, hvis du vil integrere scraping direkte i et websted, der allerede er kodet i dette sprog.
- Værktøjer uden kodning som Bright Data, Octoparse og Apify: De giver dig mulighed for at scrape data fra internettet uden at skrive en eneste linje kode.
API til web-scraping eller en gør-det-selv-løsning: hvad skal man vælge?
Det egentlige spørgsmål handler ikke om sproget, men om, hvor stor en kompleksitet du selv er parat til at håndtere. Dit eget scraping-script med Puppeteer Hvor Cheerio er stadig den bedste løsning, når mængden er lille, og stedet ikke er særlig godt beskyttet.
EN Skrabning af API (som den, Bright Data tilbyder) bliver mere relevant, så snart du støder på avancerede blokeringer: rotation af IP-adresser, automatisk løsning af CAPTCHA og JavaScript-rendering i stor skala.
Kort sagt: den Gør-det-selv sparer dig penge og lærer dig en masse. Den’API sparer dig tid på omfattende eller tilbagevendende projekter.
Ofte stillede spørgsmål
Hvad er det bedste JavaScript-værktøj til webscraping?
Det afhænger helt af, hvilken type webside du vil scrape.
- Cheerio : hurtig og let, perfekt til at analysere HTML-koden statiske sider.
- Puppeteer : ideel til at styre en rigtig navigator Chrome og administrere det indhold, der vises via JavaScript.
- Playwright : tæt på Puppeteer, men med den understøttelse af flere browsere (Chrome, Firefox, WebKit) og yderligere avancerede funktioner.
Hvad er det bedste programmeringssprog til scraping?
Der findes ikke ét universelt sprog, der er bedre end andre. Valget afhænger af dit projekt og dit miljø.
- Python : meget populært til hurtige projekter og store mængder webdata.
- JavaScript : den rigtige fremgangsmåde, hvis du allerede arbejder inden for web-økosystemet med Node.js.
- PHP : praktisk til at integrere scraping direkte i en eksisterende hjemmeside.
det Webscraping i JavaScript er stadig et fremragende valg til indsamle webdata, at du går via Cheerio, Puppeteer Hvor Playwright.
Hvis du vil lære mere uden at skrive kode, kan du tage et kig på vores vejledninger om Lyse data, Oktoparse og Apify.





