如何动态刮擦"改变" PhantomJS的数据?

时间:2017-10-10 02:35:57

标签: javascript phantomjs

var page = require("webpage").create();
page.open("http://yourwebsite", function(status) {
    console.log("Status: " + status);
    if(status === "success") {
        page.evaluate(function(){
            document.getElementById("firstName").value = "John";
            document.getElementById("lastName").value = "Doe";

        });
    }
phantom.exit();
});

因此,当使用phantomjs对脚本不断更新的数据进行网络抓取时,让我们说出分数或股票价格。如何创建持久的开放浏览器状态来收集此数据,而无需使用setInterval/Timeout在循环中调用page.open("http://yourwebsite", function(status) {}

在phantonjs中是否存在api调用实际上像无头状态下的真实浏览器一样执行?或者我只是重新加载页面并从每次重新加载中读取静态数据?

1 个答案:

答案 0 :(得分:2)

您不必重新打开该页面,您最多必须手动跟踪setInterval()次调用的状态,以确定 退出时的

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

page.open("http://yourwebsite", function(status) {
    console.log("Status: " + status);

    if(status === "success") {
        var count = 0;
        setInterval(function() {
            if (count++ === 5) {
                //You will need to figure out when to exit!!!!
                phantom.exit();
            }
            page.evaluate(function(){
                document.getElementById("firstName").value = "John";
                document.getElementById("lastName").value = "Doe";
            });
        }, 5000/*5 SECONDS*/);
    } else {
        phantom.exit(1);
    }
});