如何在滚动时加载项目来抓取完全呈现的网页?

时间:2015-04-14 06:35:20

标签: javascript web-crawler phantomjs

我想抓取Google PlayStore排名页面,例如“https://play.google.com/store/apps/category/EDUCATION/collection/topselling_paid

当我使用浏览器查看该页面时,它首先显示60个应用程序,并通过鼠标滚动和点击“显示更多”按钮显示更多540个应用程序。

我认为在创建“鼠标滚动”,“点击按钮”等事件时,页面会完全呈现。

问题是我不知道如何在没有浏览器的情况下生成这些事件,因此我只能抓取未完全呈现并且仅包含60个应用程序的页面。

我用PhantomJS尝试了一个波纹管代码,但根本没用。

var page = require('webpage').create(),
    system = require('system'),
    url;
url = system.args[1];
page.onConsoleMessage = function(msg) {
    console.log(msg);
};
page.open(url, function() {            
    page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {
        page.evaluate(function() {
            //Shows ranking up to 60th.
            console.log($("a.title").text());

            //Tried scroll mouse. However, cannot render the page.
            for(i=0; i<150; i++){
                console.log(document.body.scrollTop)
                window.scrollTo(0, document.body.scrollHeight);
                console.log(document.body.scrollTop)
                window.scrollTo(0, 0);
            }
            //Expect to show ranking up to 540th.
            console.log($("a.title").text());
        });
        phantom.exit()
    });
});

如何抓取完全呈现的网页?

1 个答案:

答案 0 :(得分:-1)

您可以使用CasperJs。这是废弃动态网页的好工具。

  

CasperJs是一个导航脚本&amp; PhantomJS的测试实用程序

例如,您有点击事件:API Documentation