Per fare scraping del web in JavaScript, ti serve Node.js e una libreria adatta al tuo pubblico di riferimento. Usa Cheerio per le pagine statiche e Puppeteer Dove Playwright non appena il contenuto viene visualizzato sul lato client.
Questa guida ti spiega, passo dopo passo, come installare, programmare ed eseguire il tuo primo scraper.
Prerequisiti per il web scraping in JavaScript

Prima di scrivere il tuo primo script JS, bastano due strumenti di base per iniziare.
- Node.js : un ambiente di esecuzione JavaScript open source e multipiattaforma. Ti permette di eseguire codice JS al di fuori di un browser, direttamente dalla tua console. Scaricalo dalla documentazione ufficiale di Node.js.
- npm (Node Package Manager) : il gestore di pacchetti integrato in Node. Serve per installare le tue librerie con un semplice comando
npm install.
Una volta Node.js Una volta fatto ciò, scegli una libreria in base al tipo di pagina web da scrappare. Ecco quelle più utilizzate.
- Cheerio : perfetta per il scraping di pagine statiche. Analizza l'HTML grezzo con una sintassi simile a jQuery. Lei è leggera, veloce ed è semplice, ma non esegue il codice JavaScript della pagina. Vedi la documentazione di Cheerio.
- Puppeteer e Playwright : ideali per i siti dinamici. Gestiscono un vero e proprio browser headless (Chrome Dove Firefox) e caricano la pagina come farebbe un utente reale. Consulta la documentazione di Puppeteer.
La regola è semplice: Cheerio per le pagine statiche, Puppeteer Dove Playwright non appena un sito carica i propri dati in JavaScript.
Come si può fare web scraping in JavaScript?
Il principio è semplice: prendi il HTML Da una pagina web, individui gli elementi che ti interessano e poi estrai i dati. La scelta dello strumento si basa su un unico criterio: la pagina è statico Dove dinamico ?
Passo 1: installazione e configurazione
Inizia scaricando Node.js dal sito ufficiale, quindi installalo. Verifica poi l'installazione nel tuo terminale:
nodo -v
npm -v
Se vengono visualizzate entrambe le versioni, è tutto a posto. Ora crea il tuo progetto:
mkdir my-scraping
cd my-scraping
npm init -y
Questo comando genera un file package.json che elencherà le tue dipendenze. Non resta che installare le librerie adatte alle tue esigenze.
Per un pagina statica (contenuto già presente nel codice HTML restituito dal server), utilizza axios e Cheerio :
npm installare axios cheerio
Per un pagina dinamica (dati caricati tramite JavaScript sul lato client, come React, Vue Dove Angular), installa invece Puppeteer :
npm installare puppeteer
Passo 2: creazione di uno script di scraping
Prima di scrivere il tuo script JS, individua quelli giusti Selettori CSS. Apri la pagina web di destinazione in Chrome Dove Firefox, fai clic con il tasto destro sull'elemento desiderato, quindi seleziona «Ispeziona». Viene visualizzato il DOM: in questo modo puoi individuare il tag, la classe (.classe) o l'ID (#id) da prendere di mira.
Scraping di una pagina statica con Cheerio
Cheerio legge solo il HTML semplice e non esegue alcun script JS. Su un sito con rendering lato client, vedrà solo una pagina vuota.
// Importare le librerie
const axios = require('axios');
const cheerio = require('cheerio');
// URL della pagina da rottamare
const url = "https://exemple.com";
// Funzione principale
funzione async scrapePage() {
try {
// Scarica il contenuto HTML
const { data } = await axios.get(url);
// Caricare l'HTML con Cheerio
const $ = cheerio.load(data);
// Esempio: recuperare tutti i titoli h1
const titles = [];
$("h1").each((i, elem) => {
titles.push($(elem).text().trim());
});
// Visualizzare i risultati
console.log("Titoli trovati:", titoli);
} catch (error) {
console.error("Errore durante lo scraping:", errore);
}
}
// Eseguire lo script
scrapePage();
Sostituisce https://exemple.com con l'URL che preferisci, quindi modifica il selettore $("h1") per individuare ciò che ti interessa: $("p") per i paragrafi, .classe Dove #id per un elemento specifico. Il metodo .text() restituisce il textContent dell'elemento, l'equivalente di jQuery a livello di server.
Scraping di una pagina dinamica con Puppeteer
Puppeteer un vero pilota browser senza testa e attende che JavaScript abbia finito di caricare il contenuto, dove Cheerio fallisce.
// Importare Puppeteer
const puppeteer = require("puppeteer");
// URL della pagina da rottamare
const url = "https://exemple.com";
funzione async scrapePage() {
// Avvio di un browser senza interfaccia grafica (headless)
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
try {
// Andare alla pagina
await page.goto(url, { waitUntil: "networkidle2" });
// Esempio: estrarre il testo da tutti i titoli h1
const titles = await page.$$eval("h1", elements =>
elements.map(el => el.textContent.trim())
);
console.log("Titoli trovati:", titoli);
} catch (error) {
console.error("Errore durante lo scraping:", error);
} finally {
// Chiudere il browser
await browser.close();
}
}
// Eseguire lo script
scrapePage();
L'opzione waitUntil: "networkidle2" attende la fine dei richieste di rete prima di estrarre i dati dalla pagina web.
Fase 3: Gestione dei dati estratti
Una volta recuperati i dati, puoi salvarli in JSON per un database, oppure in CSV per aprirli in Excel. Il modulo fs è originario di Node.js e non richiede alcuna installazione. Per il CSV, basta aggiungere la libreria 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();
Questo script JS esegue tutte queste operazioni in un colpo solo: recupera la pagina web, estrae i dati HTML e poi scrive due file. Il blocco try / catch gestisce gli errori per evitare che un tempo scaduto o uno CAPTCHA non causi il blocco dell'intero script di scraping.
Le migliori pratiche per lo scraping del web in JavaScript
Prima di eseguire i tuoi script, ecco alcune semplici precauzioni per proteggere il tuo scraping in JavaScript efficace, stabile e nel rispetto delle condizioni d'uso dei siti in questione. È inoltre importante assicurarsi che la tua questa procedura è legale a seconda del contesto.
- Rispettare il file robots.txt : questa è la regola d'oro. Prima di eseguire lo scraping di una pagina web, apri
https://exemple.com/robots.txt. Se il percorso di destinazione è in Disallow, non estrarlo. In questo modo eviterai problemi etici e legali. - Distanzia le tue richieste : non inondare il sito di richieste. Lascia passare un po’ di tempo tra una richiesta e l’altra per mantenere la discrezione ed evitare di essere bloccato.
- Personalizza il tuo User-Agent : di default, uno scraper JS viene individuato facilmente. Con Puppeteer, definisci un'intestazione realistica tramite
page.setUserAgent()per imitare un vero browser. - Gestire gli errori e i blocchi : racchiudi le tue chiamate in un blocco
try / catchper evitare che un timeout o un CAPTCHA causi il crash dell'intero script.
Quali sono le alternative da prendere in considerazione?
Il web scraping non si limita a JavaScript. A seconda del tuo progetto, altri linguaggi o strumenti potrebbero soddisfare meglio le tue esigenze.
- Pitone : le biblioteche Scrapy e BeautifulSoup sono straordinari per estrarre contenuti da numerose pagine web.
- PHP : utile se vuoi integrare lo scraping direttamente in un sito già scritto in questo linguaggio.
- Strumenti senza codice come Bright Data, Octoparse e Apify: ti permettono di estrarre dati dal web senza scrivere una sola riga di codice.
API di scraping o soluzione fai-da-te: quale scegliere?
La vera questione non è il linguaggio, ma il livello di complessità che sei disposto a gestire da solo. Il tuo script di scraping personalizzato con Puppeteer Dove Cheerio rimane l'opzione migliore quando il volume è ridotto e il sito è poco protetto.
Una API di scraping (come quella offerta da Bright Data) diventa più utile non appena ci si trova di fronte a blocchi avanzati: rotazione degli indirizzi IP, risoluzione automatica dei CAPTCHA, rendering JavaScript su larga scala.
In sintesi: il Fai da te ti fa risparmiare denaro e ti insegna molto. L’API ti fa risparmiare tempo nei progetti complessi o ricorrenti.
Domande frequenti
Qual è il miglior strumento di web scraping in JavaScript?
Dipende tutto dal tipo di pagina web che vuoi sottoporre a scraping.
- Cheerio : veloce e leggero, perfetto per analizzare l'HTML pagine statiche.
- Puppeteer : ideale per pilotare una vera nave Chrome e gestire i contenuti generati in JavaScript.
- Playwright : vicino a Puppeteer, ma con il supporto multi-browser (Chrome, Firefox, WebKit) e ulteriori funzioni avanzate.
Qual è il miglior linguaggio di programmazione per lo scraping?
Non esiste un linguaggio universale migliore di un altro. La scelta dipende dal tuo progetto e dal contesto in cui operi.
- Pitone : molto diffuso per progetti rapidi e grandi volumi di dati web.
- JavaScript : il giusto approccio se lavori già nell'ecosistema web con Node.js.
- PHP : utile per integrare lo scraping direttamente in un sito già esistente.
il scraping del web in JavaScript rimane un'ottima scelta per raccogliere dati web, che passi per Cheerio, Puppeteer Dove Playwright.
Per approfondire l'argomento senza scrivere codice, dai un'occhiata alle nostre guide su Dati luminosi, Octoparse e Apify.





