@Tdvist

Как скачать файл с сайта через Node.js?

Задача стояла скопировать верстку главной страницы одного сайта. Изначально использовал wget, но он не цеплял важные файлы, которые грузились с другого домена. Файлов ~150 и хотелось сохранить струкутуру домен/../../../file.css. Решил, что полюбому на Node.js что-то такое можно сделать(Node.js потому что чуть чуть умею в js). Нашел модуль на js .
Написал код:
'use strict';
const fs = require("fs");
const wget = require('wget-improved');

let htmlContent = fs.readFileSync("sun.html", "utf8");
let result = htmlContent.match(/"https:\/\/g.+?"/g) || [];

console.log(result);


function httpGet(url) {
    const options = {
      protocol: 'https'
    };
    let src = url.replace(/\"/g, "");
    let output = "./" + url.replace('https://', '').replace(/\"/g, "");
    console.log(output);
    let download = wget.download(src, output, options);
    download.on('error', function(err) {
    });
    download.on('start', function(fileSize) {
        console.log(fileSize);
    });
    download.on('end', function(output) {
        console.log(output);
    });
    download.on('progress', function(progress) {
        typeof progress === 'number'
    });
}

result.forEach((item) => {
  httpGet(item);
});

console.log('Done');

Запускаю, а он
node:events:353
throw er; // Unhandled 'error' event
^
Error: ENOENT: no such file or directory, open

А почему я должен создавать, нормально же общались. В доке:

const wget = require('wget-improved');
const src = 'http://nodejs.org/images/logo.svg';
const output = '/tmp/logo.svg';
const options = {
    // see options below
};
let download = wget.download(src, output, options);
download.on('error', function(err) {
    console.log(err);
});
download.on('start', function(fileSize) {
    console.log(fileSize);
});
download.on('end', function(output) {
    console.log(output);
});
download.on('progress', function(progress) {
    typeof progress === 'number'
    // code to show progress bar
});

Для создания файлов с нужным расширением нужно будет куча кода писать. Можно ли как-то обойтись малой кровью в данном случае. С путями и формируемыми ссылками из html все ок.
  • Вопрос задан
  • 307 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы