更新
去年接受的答案是好的,但今天我会使用其他人都使用的软件包:https://github.com/mikeal/request
原始
我试图抓取谷歌的标志,并将其保存到我的服务器上,并使用node.js。
这就是我现在拥有的,但不起作用的东西:
var options = {
host: 'google.com',
port: 80,
path: '/images/logos/ps_logo2.png'
};
var request = http.get(options);
request.on('response', function (res) {
res.on('data', function (chunk) {
fs.writeFile(dir+'image.png', chunk, function (err) {
if (err) throw err;
console.log('It\'s saved!');
});
});
});我该怎么做呢?
发布于 2011-03-14 04:08:40
这里发生了几件事:
这应该是可行的:
var http = require('http')
, fs = require('fs')
, options
options = {
host: 'www.google.com'
, port: 80
, path: '/images/logos/ps_logo2.png'
}
var request = http.get(options, function(res){
var imagedata = ''
res.setEncoding('binary')
res.on('data', function(chunk){
imagedata += chunk
})
res.on('end', function(){
fs.writeFile('logo.png', imagedata, 'binary', function(err){
if (err) throw err
console.log('File saved.')
})
})
})发布于 2013-12-10 09:30:58
这个线程是旧的,但是我想对https://github.com/mikeal/request包做同样的事情。
这里是一个有用的例子
var fs = require('fs');
var request = require('request');
// Or with cookies
// var request = require('request').defaults({jar: true});
request.get({url: 'https://someurl/somefile.torrent', encoding: 'binary'}, function (err, response, body) {
fs.writeFile("/tmp/test.torrent", body, 'binary', function(err) {
if(err)
console.log(err);
else
console.log("The file was saved!");
});
});发布于 2012-01-07 17:03:09
我建议您使用http-请求,这样甚至可以管理重定向。
var http = require('http-request');
var options = {url: 'http://localhost/foo.pdf'};
http.get(options, '/path/to/foo.pdf', function (error, result) {
if (error) {
console.error(error);
} else {
console.log('File downloaded at: ' + result.file);
}
});https://stackoverflow.com/questions/5294470
复制相似问题