如何一次打印所有内容

时间:2018-04-25 05:24:29

标签: javascript jquery node.js cheerio

我在下面的代码中,想法是当用户提供参数(歌手/名字),它保存并转到每个(歌手)的URL并打印所有歌曲然后转到下一个(歌手姓名)url并打印所有歌曲,以及So On,

此代码中的问题是,当它为第一个(歌手)打印并进入下一个时,它会打印(第一个和第二个一起再次)

喜欢(首先,(第一+第二),(第一,第二,第三)......)

我怎么一次打印整个东西,就像所有在一起一次......

我试图在代码中的某些地方打印,但它不会工作,
当我尝试打印console.log(mailoutput);时,它在each loop内部工作但在其外部,它显示了它Undefined

var request = require('request');
var cheerio = require('cheerio');

var urls = [];
var mailoutput ;
var songs = [];



// save all arguments into an array
for (let j = 2; j < process.argv.length; j++) {
    urls.push(process.argv[j]);
}

// loop through the array
for(var i =0; i<urls.length; i++){

 request('https://www.billboard.com/music/'+urls[i], function(error,response,body){
    if(!error && response.statusCode == 200){

var $ = cheerio.load(body);

var title = $('a.artist,div.artist-name').each(function(i, element) {
  mailoutput = $(this).text();
 //console.log(mailoutput);
  songs= songs +mailoutput;

});

}  // END OF IF ERROR
  console.log(songs);

});   // end of the REQUEST here

}  // end of the LOOP here ...

2 个答案:

答案 0 :(得分:3)

您需要稍微更改一下代码

而不是: -

songs= songs +mailoutput;

做的: -

songs.push(mailoutput);

完整代码需要: -

var request = require('request');
var cheerio = require('cheerio');

var urls = [];
var mailoutput ;
var songs = [];

for (let j = 2; j < process.argv.length; j++) {
    urls.push(process.argv[j]);
}
for(var i =0; i<urls.length; i++){
    request('https://www.billboard.com/music/'+urls[i], function(error,response,body){
        if(!error && response.statusCode == 200){
            var $ = cheerio.load(body);
            var title = $('a.artist,div.artist-name').each(function(i, element) {
                mailoutput = $(this).text();
                songs.push(mailoutput); // you define as array so push values to array
            });
        }
    });
}
console.log(songs);

答案 1 :(得分:1)

```

for(var i =0; i<urls.length; i++){
    request('https://www.billboard.com/music/'+urls[i], function(error,response,body){
        if(!error && response.statusCode == 200){
            var $ = cheerio.load(body);
            var title = $('a.artist,div.artist-name').text();
            console.log(title);
        }
    });
}

```