如何使用 phantomjs 连续点击 "Load More" 按钮直到页面完全填充?

How to use phantomjs to click "Load More" button continually until page is fully populated?

我是学习 phantomjs 和 casperjs 的新手,正在寻找一些关于如何单击 "Load More" 按钮以完全填充页面的指示。我查看了类似的问题,但没有看到任何匹配的内容(至少我不理解)。这个想法是从 livestream.com 活动页面中抓取观看者计数。

首先,我可以用phantomjs抓取纯文本的第一页(以cnet为例)如下:

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

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

还有很多其他活动列表需要单击 "Load More"。我想使用以下伪代码扩展上面的代码来执行此操作:

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

检查上面的按钮元素 url 我发现了以下内容:

<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 中这样做是否更有意义?

请原谅我极端的菜鸟水平,我正在尽我所能解决这个问题,但我需要一些指导。

谢谢!

您可以像下面的骨架一样编写自己的实现

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

我以前做过这样的实现,效果很好。