我怎样才能复制一个wget与node.js的function?

是否有可能在node.js应用程序中运行wget ? 我想有一个脚本抓取一个网站,并下载一个特定的文件,但文件的链接的href更改经常。 所以,我认为最简单的方法是find链接的href ,然后只是执行一个wget。

谢谢!

您可以使用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); } }); 

为了将来的参考,我会build议请求 ,这使得它很容易获取该文件:

 var request = require("request"); request(url, function(err, res, body) { // Do funky stuff with body }); 

虽然它可能比一些第三方的东西更冗长,Node的核心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); }); 

你可以使用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"); } }); 

你可以使用node-wget 。 在“wget”不可能的情况下工作