JavaScript:
Scaricare una pagina web
How to: (Come fare)
Usiamo fetch()
per prendere il contenuto di una pagina web. Guarda qui:
// Metodo asincrono per scaricare il contenuto di una pagina web
async function downloadWebPage(url) {
try {
const response = await fetch(url);
const data = await response.text();
console.log(data); // Qui abbiamo i dati della pagina
} catch (error) {
console.error('Errore nel download:', error);
}
}
// Esempio di utilizzo
downloadWebPage('https://www.example.com');
Se lavori in Node.js, ti serve node-fetch
o axios
. Così:
const fetch = require('node-fetch'); // Oppure importa axios
fetch('https://www.example.com')
.then(response => response.text())
.then(data => {
console.log(data); // Ecco il tuo HTML!
})
.catch(error => {
console.error('Errore:', error);
});
Deep Dive (Approfondimento)
La funzione fetch()
è parte dell’API Fetch moderna, che a partire da HTML5 ha soppiantato XMLHttpRequest
. fetch()
supporta promesse e async/await
per un codice più pulito e leggero.
Alternative come axios
possono offrire vantaggi come l’intercettazione delle richieste, timeout automatici, e protezione contro attacchi CSRF. node-fetch
è un polyfill di fetch()
per Node.js.
Per scaricare file più grandi o avere più controllo, considera moduli come request
(sebbene al 2023 sia deprecato) o librerie come got
, che gestiscono stream e performance meglio.
Il download completo, compresi script e stili, può richiedere parsing del DOM e gestione delle risorse incrociate. Framework come Puppeteer o Playwright simulano l’intero browser per questo.
See Also (Vedi anche)
- MDN Web Docs su Fetch API: https://developer.mozilla.org/it/docs/Web/API/Fetch_API
- GitHub Axios: https://github.com/axios/axios
- Node-fetch: https://www.npmjs.com/package/node-fetch
- Puppeteer: https://pptr.dev/
- Playwright: https://playwright.dev/