node.jsアプリ内で基本的にwget
を実行できますか?サイトをクロールして特定のファイルをダウンロードするスクリプトを作成したいのですが、ファイルを移動するリンクのhref
がかなり頻繁に変更されます。だから、私はそれを行うのが最も簡単な方法は、リンクのhref
を見つけて、それからwgetを実行することだと考えました。node.jsでwgetの機能をどのように複製できますか?
ありがとうございます!
node.jsアプリ内で基本的にwget
を実行できますか?サイトをクロールして特定のファイルをダウンロードするスクリプトを作成したいのですが、ファイルを移動するリンクのhref
がかなり頻繁に変更されます。だから、私はそれを行うのが最も簡単な方法は、リンクのhref
を見つけて、それからwgetを実行することだと考えました。node.jsでwgetの機能をどのように複製できますか?
ありがとうございます!
あなたがchild_processesを使用して外部コマンドを実行することができます。
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);
}
});
これは質問に答えますが、なぜあなたはリクエストを使用できるのですか? – dovidweisz
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");
}
});
、私はそれが、この簡単にそのファイルフェッチすることができた、requestをお勧めします:
var request = require("request");
request(url, function(err, res, body) {
// Do funky stuff with body
});
をそれはいくつかのサードパーティ製のものよりも少し冗長かもしれませんが、ノードのコアHTTP
モジュールは、あなたがこのために使用することができHTTP clientのために用意されています
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);
});
私はこの回答がコアのNodeライブラリのみを利用するのが好きです。良い仕事 – nic
依存関係を追加することなく、より少ない労力を求めているなら、組み込みの 'url'モジュールの' parse'メソッドを使うと、 'options'をビルドする代わりに使うことができるオブジェクトが得られます。 (すでに文字列URIが渡されていると仮定します)。 – Tersosauros
あなたはnode-wgetを使用することができます。 'wgetの' 例で 作品http://nodejs.org/docs/latest/api/all.html#([ `` child_process.exec(CMD)]のためのNode.jsのマニュアルを参照してください
ことはできませんall_child_process_exec_command_options_callback)。 – maerics