我怎样才能复制一个wget与node.js的function?
是否有可能在node.js应用程序中运行wget
? 我想有一个脚本抓取一个网站,并下载一个特定的文件,但文件的链接的href
更改经常。 所以,我认为最简单的方法是find链接的href
,然后只是执行一个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); } });
为了将来的参考,我会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”不可能的情况下工作