nodejs批量下载图片

我有很多的图片地址,图片地址需要登录后台才可以访问到,地址的形式如: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等后缀的图片地址,是可以下载的。但如果是我那种图片地址,下载下来的是一个文件。文件里面是登录界面的代码。
猜想:是否需要在程序下载图片之前登录后台?如果是这样,该怎么实现呢?

阅读 2.8k
1 个回答

找本爬虫入门的书籍看吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题