2017-05-11 3 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(); 

마지막 요소 만 표시됩니다. 'URL 시작 중 ...'은 한 번만 울립니다. 캐스퍼가 전체 배열을 반복하지 않는 이유는 무엇입니까?

+0

여기서 'url'을 (를) 선언 하시겠습니까? 'forEach' 콜백에서'var url = ....'을 시도하십시오. – DavidDomain

+0

'var'을 추가했지만 아무 것도 변경하지 않았습니다 ... – brainstormtrooper

답변

1

각 반복마다 캐스퍼를 다시 시작한 것처럼 보입니다. 첫 번째 반복 후에 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(); '를 호출 할 수 있기 때문에 더 짧게 작성할 수도 있습니다. –