Como clonar um site baixar arquivos HTML, CSS, JS, imagens e HTML usando Node.js?

clonar site node js

Você pode utilizar a biblioteca node-fetch para fazer requisições HTTP e o módulo fs para salvar os arquivos localmente.

Primeiro, você precisa instalar a biblioteca node-fetch utilizando o gerenciador de pacotes npm com o seguinte comando:

npm install node-fetch


Em seguida, você pode utilizar o seguinte código para fazer a requisição HTTP para o site desejado e salvar os arquivos localmente:
 

const fetch = require('node-fetch');
const fs = require('fs');

const url = 'https://dominiodosite.com';
const outputDir = './pastalocal';

fetch(url)
  .then(res => res.text())
  .then(body => {
    fs.mkdirSync(outputDir, { recursive: true });
    fs.writeFileSync(`${outputDir}/index.html`, body);

    const regex = /<link.*?href="(.*?)".*?>/g;
    let match;
    while (match = regex.exec(body)) {
      const cssUrl = new URL(match[1], url).href;
      fetch(cssUrl)
        .then(res => res.text())
        .then(css => {
          const cssFilename = cssUrl.split('/').pop();
          fs.writeFileSync(`${outputDir}/${cssFilename}`, css);
        });
    }

    const regex2 = /<script.*?src="(.*?)".*?>/g;
    while (match = regex2.exec(body)) {
      const jsUrl = new URL(match[1], url).href;
      fetch(jsUrl)
        .then(res => res.text())
        .then(js => {
          const jsFilename = jsUrl.split('/').pop();
          fs.writeFileSync(`${outputDir}/${jsFilename}`, js);
        });
    }

    const regex3 = /<img.*?src="(.*?)".*?>/g;
    while (match = regex3.exec(body)) {
      const imgUrl = new URL(match[1], url).href;
      fetch(imgUrl)
        .then(res => res.buffer())
        .then(img => {
          const imgFilename = imgUrl.split('/').pop();
          fs.writeFileSync(`${outputDir}/${imgFilename}`, img);
        });
    }
  })
  .catch(err => console.error(err));


Neste exemplo, o código faz uma requisição HTTP para a URL desejada e salva o conteúdo HTML no arquivo index.html. Em seguida, ele utiliza expressões regulares para encontrar todos os links para arquivos CSS, JS e imagens no HTML e faz requisições HTTP para cada um deles. Os arquivos são salvos localmente na pasta especificada em outputDir.

Quer acompanhar as novidade do site?

Leia mais em: odejs.org/en

Como clonar um site baixar arquivos HTML, CSS, JS, imagens e HTML usando Node.js?

Última atualização: 2023-04-15

Exemplos de uso


Palavras-Chaves