我有很多的图片地址,图片地址需要登录后台才可以访问到,地址的形式如:http://IP:8080/网网站根目录/irisAction.do?responseIrisImage&id=图片ID&no=参数。
下载图片的代码为:
var fs = require("fs");
var path = require('path');
var async = require("async");
var request = require('request');
var imageLinks = require("./image_links").imageLinks;
var index = 1;
var downloadImage = function(src, dest, callback) {
request.head(src, function(err, res, body) {
// console.log('content-type:', res.headers['content-type']);
// console.log('content-length:', res.headers['content-length']);
if (src) {
request(src).pipe(fs.createWriteStream(dest)).on('close', function() {
callback(null, dest);
});
}
});
};
async.mapSeries(imageLinks, function(item, callback) {
//console.log(item);
setTimeout(function() {
if (item.indexOf("网站域名") === 0) {
var destImage = path.resolve("./images/", item.split("/")[item.split("/").length -1]);
console.log(destImage)
downloadImage(item, destImage, function(err, data){
console.log("["+ index++ +"]: " + data);
});
}
callback(null, item);
}, 100);
}, function(err, results) {});
image_links存放的是多个图片的路径,这里面如果放的是.jpg等后缀的图片地址,是可以下载的。但如果是我那种图片地址,下载下来的是一个文件。文件里面是登录界面的代码。
猜想:是否需要在程序下载图片之前登录后台?如果是这样,该怎么实现呢?
找本爬虫入门的书籍看吧