2017-10-17 6 views
1

나는 phantomjs와 casperjs를 배우며 "Load More"버튼을 클릭하여 페이지를 완전히 채우는 방법에 대한 몇 가지 지침을 찾고있다. 나는 비슷한 질문을 보았지만 일치하는 것을 보지 못했다. 아이디어는 livestream.com 이벤트 페이지에서 시청자 수를 긁어 모으는 것입니다. 다음과 같이 시작phantomjs를 사용하여 페이지가 완전히 채워질 때까지 "추가로드"버튼을 계속 클릭하는 방법?

, 나는 (예를 들어 CNET 사용) phantomjs에 일반 텍스트로 첫 페이지를 잡을 수

var page = require('webpage').create(); 

page.open('http://livestream.com/cnet', function() { 
    console.log(page.plainText); 
    phantom.exit(); 
}); 

추가 이벤트 리스팅 꽤 수는 있지만 "이 클릭을 필요로하는 더로드 ". 나는 다음과 같은 발견 위의 URL에서 버튼 요소를 검사

while ("Load More" exists) { 
    click button 
    delay to allow page to load 
} 

: 나는 다음과 같은 의사 코드를 사용하여이 작업을 수행하는 위의 코드를 확장하려는 내가 클릭 수있는 방법

<a href="javascript:void(0);" class="button thin_border_button black_border small_button ng-binding" ng-click="loadMoreEventsPublic('Archived')" ng-bind="loadMoreText">Load More</a> 

(즉, 페이지가 완전히로드되고 팬텀을 종료 할 때까지 ng-click = "loadMoreEventsPublic ('Archived')")를 반복해서 수행 하시겠습니까?

casperjs에서이 작업을 수행하는 것이 더 합리적입니까?

내 극단적 인 놈 수준을 변명해라. 나는 가능한 한 많이 알아 내려고 노력하고 있지만 어떤 방향이 필요하다.

감사합니다.

답변

0

당신은 그것을 멋지게 일 전에 & 동안 구현 같은 종류의 일을했습니다 '아래의 골격

function onLoadMoreLinkExists(){ 
     casper.click("load more link selector"); 
     casper.then(function(){ 
      casper.waitFor("load more link selector", onLoadMoreLinkExists, afterAllLoad); 
     }); 
} 

function afterAllLoad(){ 
    // what to do once after all lazy load content loaded 
} 

casper.waitFor("load more link selector", onLoadMoreLinkExists 
}, afterAllLoad); 

처럼 자신의 구현을 작성할 수 있습니다.