我非常擅长学习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等级,我尽可能多地想出这个但是我需要一些方向。
谢谢!
答案 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;它工作得很好。