Как я могу воспроизвести функциональность wget с помощью node.js?
Можно ли по существу запустить wget
из приложения node.js? Я хотел бы иметь script, который сканирует сайт и загружает определенный файл, но href
ссылки, которая идет в файл, изменяется довольно часто. Итак, я решил, что самый простой способ сделать это - найти href
ссылки, а затем просто выполнить wget на нем.
Спасибо!
Ответы
Ответ 1
Вы можете запустить внешнюю команду с помощью child_processes:
http://nodejs.org/docs/latest/api/child_process.html#child_process_child_process_exec_command_options_callback
var util = require('util'),
exec = require('child_process').exec,
child,
url = 'url to file';
child = exec('wget ' + url,
function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
Ответ 2
В будущем, я бы рекомендовал request, что облегчает выбор этого файла:
var request = require("request");
request(url, function(err, res, body) {
// Do funky stuff with body
});
Ответ 3
Хотя он может быть немного более подробным, чем некоторые сторонние материалы, модуль Node core HTTP
обеспечивает HTTP-клиент вы можете использовать для этого:
var http = require('http');
var options = {
host: 'www.site2scrape.com',
port: 80,
path: '/page/scrape_me.html'
};
var req = http.get(options, function(response) {
// handle the response
var res_data = '';
response.on('data', function(chunk) {
res_data += chunk;
});
response.on('end', function() {
console.log(res_data);
});
});
req.on('error', function(err) {
console.log("Request error: " + err.message);
});
Ответ 4
U может просто использовать wget.
var exec = require('child_process').exec;
child = exec("/path/to/wget http://some.domain/some.file", function (error, stdout, stderr) {
if (error !== null) {
console.log("ERROR: " + error);
}
else {
console.log("YEAH IT WORKED");
}
});
Ответ 5
Вы можете использовать node-wget.
Работает в случаях, когда "wget" невозможно