我的要求是从facebook读取和存储简单的图像资源。 图片网址:https://badge.facebook.com/badge/1.png
以下是代码段(我曾经从谷歌中读取图片)根据我的要求不能正常工作它只是在我的本地磁盘中存储无效图像
var fs = require('fs'),
request = require('request');
var download = function(uri, filename, callback){
request.get(uri, function(err, res, body){
console.log('content-type:', res.headers['content-type']);
console.log('content-length:', res.headers['content-length']);
var r = request(uri).pipe(fs.createWriteStream(filename));
r.on('close', callback);
r.on('error', function(err) {console.log(err)})
});
};
download('https://badge.facebook.com/badge/1.png', 'google.png', function(){
console.log('Done downloading..');
});
答案 0 :(得分:1)
这不是nodejs或请求的问题,而是facebook。
您可以使用文本编辑器打开google.png
,这是一个html文件。
所以也许facebook有一些反爬虫防火墙。
只需设置标题,例如:
var fs = require('fs'),
request = require('request');
var download = function(uri, filename, callback){
var r = request({
url: uri,
headers: {
'accept': 'image/*',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36',
}
}).pipe(fs.createWriteStream(filename));
r.on('error', function(err) {console.log(err)})
r.on('close', callback);
};
download('https://badge.facebook.com/badge/1.png', 'google.png', function(){
console.log('Done downloading..');
});