2017-05-11 42 views
0

我有3個URL循環查找要下載的文件。獲取CasperJS遍歷URL列表

lst = ["BX", "BL", "BM"]; 
lst.forEach(function(i){ 
    var url = 'http://www.tzg-infocenter.com/visubl_php//images/' + i + '/' + clip + '/' + casper.cli.raw.get('entryDate') + '/' + ref + '.PDF'; 
    casper.start(url,function(){ 

     this.echo('>>> Starting URL ' + url); 
    } 
}); 
casper.run(); 

但只有最後一個元素被回顯。 「起始網址...」只回響一次。爲什麼不是卡斯珀遍歷整個數組?

+0

你在哪裏聲明'url'?在'forEach'回調中,嘗試'var url = ....'。 – DavidDomain

+0

我加了'var',但沒有改變任何東西...... – brainstormtrooper

回答

1

看起來像是在每次迭代中重新啓動casper。而不是在第一次迭代後使用thenOpen

thenOpen

簽名thenOpen(字符串位置[,混合選項])

添加用於打開新位置的新導航步驟,以及任選地添加時在下一個步驟其加載:...

請嘗試以下操作:

var casper = require('casper').create(); 

var urls = ['https://google.com', 'http://casperjs.org/', 'http://phantomjs.org'] 

urls.forEach(function(url, idx) { 

    if (idx > 0) { 
    casper.thenOpen(url, function() { 
     this.echo(this.getTitle()); 
    }); 
    } else { 
    casper.start(url, function() { 
     this.echo(this.getTitle()); 
    }); 
    } 

}) 


casper.run(); 
+0

它可以寫得更短,因爲你可以在循環之前調用casper.start();'。 –