2017-10-17 75 views
1

我在學習phantomjs和casperjs方面非常新,並且在如何單擊「加載更多」按鈕來完全填充頁面時尋找一些指針。我已經看過類似的問題,但沒有看到任何匹配的東西(至少不是我理解的)。這個想法是從livestream.com活動頁面中刪除觀衆人數。如何使用phantomjs連續點擊「加載更多」按鈕,直到頁面完全填充?

開始時,我可以phantomjs(使用CNET爲例)搶到第一頁以純文本格式如下:

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

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

有相當數量的額外的事件列表,雖然這需要點擊「裝載更多」。我想用下面的僞代碼來擴展上面的代碼要做到這一點:

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')」),直到頁面完全加載,然後退出phantomjs?

在casperjs中這樣做會更有意義嗎?

請原諒我的極端noob水平,我試圖儘可能多的解決這個問題,但我需要一些方向。

謝謝!

回答

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); 

我已經做了這樣一種實現,而以前&它的工作很好。

相關問題