Webscraping i JavaScript : Komplet guide

Forfatter :

Reagerer:

Kommentar

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

Node.js-miljø og biblioteker til webscraping i JavaScript.
Node.js-miljø og biblioteker til webscraping i JavaScript ©Christina til Alucare.fr

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 / catch for 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.

👍Din mening
Artiklen er informativ
Artiklen er objektiv
Artiklen besvarer mit spørgsmål
Indholdet er opdateret
🔍 Fandt du nogen fejl? Fortæl os hvor!

Kan du lide det? Så del den!

Dette indhold er oprindeligt på fransk (Se redaktøren lige nedenfor). Den er blevet oversat og korrekturlæst på forskellige sprog ved hjælp af Deepl og/eller Google Translate API for at kunne tilbyde hjælp i så mange lande som muligt. Denne oversættelse koster os flere tusinde euro om måneden. Hvis den ikke er 100 % perfekt, så skriv en kommentar, så vi kan rette den. Hvis du er interesseret i at læse korrektur og forbedre kvaliteten af oversatte artikler, så send os en e-mail ved hjælp af kontaktformularen!
Vi sætter pris på din feedback, så vi kan forbedre vores indhold. Hvis du vil foreslå forbedringer, kan du bruge vores kontaktformular eller skrive en kommentar nedenfor. Dine kommentarer hjælper os altid med at forbedre kvaliteten af vores hjemmeside Alucare.fr


Alucare er et uafhængigt medie. Støt os ved at tilføje os til dine Google News-favoritter:

Skriv en kommentar på diskussionsforummet