代码之家  ›  专栏  ›  技术社区  ›  CSR

如何使用phantomjs连续单击“加载更多”按钮,直到页面完全填充?

  •  1
  • CSR  · 技术社区  · 7 年前

    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?

    请原谅我的极端noob水平,我正试图尽可能多地解决这个问题,但我需要一些指导。

    非常感谢。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Garfield    7 年前

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

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

    不久前,我已经完成了此类实现&它工作得很好。