如何使用phantomjs点击"加载更多"按钮一直持续到页面完全填充?

时间:2017-10-17 00:20:26

标签: javascript angularjs phantomjs casperjs

我非常擅长学习phantomjs和casperjs,并寻找一些关于如何点击“加载更多”和#34;用于完全填充页面的按钮。我查看了类似的问题,但没有看到任何匹配(至少不是我理解的)。我们的想法是从livestream.com活动页面中删除观众数量。

首先,我可以使用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 =&#34; loadMoreEventsPublic(&#39; Archived&#39;)&#34;)直到页面完全加载然后退出phantomjs?

在casperjs中执行此操作会更有意义吗?

请原谅我的极端noob等级,我尽可能多地想出这个但是我需要一些方向。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以编写自己的实现,如下面的骨架

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

我以前做过这样的实施&amp;它工作得很好。