down.js
/** * Node Reptilia */ var fs = require('fs'); var request = require("request"); var cheerio = require("cheerio"); var async = require('async'); // local storage directory var dir = './images'; // number of concurrent was asyncNum = 5; // download pictures function downloadImg(photos, dir, asyncNum) { console.log ( "the upcoming asynchronous concurrent download pictures, the current number of concurrent is:" + asyncNum); async.mapLimit(photos, asyncNum, function (photo, callback) { var filename = photo.substr(-5, 5); if (filename) { console.log ( 'downloading' + photo); // default // fs.createWriteStream(dir + "/" + filename) // prevent pipe error request(photo) .on('error', function (err) { console.log(err); }) .pipe(fs.createWriteStream(dir + "/" + filename)); the console.log ( 'Download Complete'); callback(null, filename); } }, function (err, result) { if (err) { console.log(err); } else { console.log(" all right ! "); console.log(result); } }) } was originUrl = 'http://mhpic.mh51.com/comic/Y/%E9%A9%AD%E7%81%B5%E5%B8%88/3-6%E8%AF%9D/1.jpg '; was Sum 10; var photos = []; for (var i = 1; i <= sum; i++) { var url = originUrl.substring(0, originUrl.length - 5); photos.push(url + i + '.jpg'); } photos.forEach((url, idx) => { let filename = url.split ( '/') pop ();. // name of the original network has been named the local picture picture // request({ url }).pipe( // fs.createWriteStream ( `./images / $ {filename}`) .on ( 'close', err => {console.log ( 'write failure', err)}) // ) request.get({ uri: url, encoding: 'binary' }, function (err, res) { if (!err) { fs.writeFile(`./images/${filename}`, res.body, "binary", function (err, res) { if (!err) { // } else { console.log(err); } }) } }) }) // downloadImg(photos, dir, asyncNum)
.