【Nodejs】使用request批量下载MP3,文件数量内容都没问题

看来request远强于http.request是毋庸置疑的了。

代码如下:

//======================================================
// 喜爱123四年级上英语MP3下载爬虫1.00,使用requests
// http.request可信度不高
// 2018年5月10日
//======================================================
var fs=require('fs');// 文件处理模块

function downloadMp3(url){
    var request = require('request');
    var req = request(url, {timeout: 10000, pool: false});
    req.setMaxListeners(50);
    req.setHeader('user-agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36');

    req.on('error', function(err) {
        throw err;
    });
    req.on('response', function(res) {
        res.setEncoding("binary");
        var fileData = "";

        res.on('data', function (chunk) {
            fileData+=chunk; 
        });
        res.on('end',function(){
            var name=url.slice(url.lastIndexOf("/"));
            var fileName="./"+name;

            fs.writeFile(fileName, fileData, "binary", function(err){
                if(err){
                    console.log("[downloadPic]文件   "+fileName+"  下载失败.");
                    console.log(err);
                }else{
                    console.log("文件"+fileName+"下载成功");
                }
            });  
        });
    })
}

//-------------------------------
// 入口函数
//-------------------------------
function main(){
    var profix='http://ting.xiai123.com/mp3/kewen/wysyy4s/Module0';
    var appendixs=['Unit1','Unit2','Words'];

    for(var i=1;i<10;i++){
        for(var j=0;j<appendixs.length;j++){
            var url=profix+i+'_'+appendixs[j]+".mp3";
            downloadMp3(url);
        }
    }

    
    //downloadMp3('http://ting.xiai123.com/mp3/kewen/wysyy4s/Module01_Unit2.mp3');
}

// 开始
main();

2018年5月10日

原文地址:https://www.cnblogs.com/heyang78/p/9019334.html