Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用「;窗口。仅加载“;在幻影中_Node.js_Phantomjs - Fatal编程技术网

Node.js 使用「;窗口。仅加载“;在幻影中

Node.js 使用「;窗口。仅加载“;在幻影中,node.js,phantomjs,Node.js,Phantomjs,我正在通过npm-phantom模块使用PhantomJS从基于AJAX的页面中抓取数据。有时,当phantom开始DOM遍历时,数据尚未加载。如何在页面中插入类似window.onload=function(){…}的内容。评估?它返回一个函数,但不是数据 var phantom = require('phantom'); exports.main = function (url, callback) { phantom.create(function (ph) {

我正在通过
npm-phantom
模块使用PhantomJS从基于AJAX的页面中抓取数据。有时,当phantom开始DOM遍历时,数据尚未加载。如何在
页面中插入类似
window.onload=function(){…}
的内容。评估
?它返回一个函数,但不是数据

var phantom = require('phantom');

exports.main = function (url, callback) {
    phantom.create(function (ph) {
        ph.createPage(function (page) {
            page.open(pref + url, function (status) {
                page.evaluate(function () {
                    // here  
                    var data = {};
                    data.one = document.getElementById("first").innerText;
                    data.two = document.getElementById("last").innerText;
                    return data;
                },
                function (res) {
                    callback(null, res);
                    ph.exit();
                });
            });
        });
    });
}
在我找到的PhantomJSAPI页面上,它是如何应用的。

page.open(url,function(status){…})
只是

page.onLoadFinished = function(status){...};
page.open(url);
您可以找到以下报价:

另请参阅,以获取onLoadFinished回调的备用钩子


因为这是一个基于AJAX的页面,所以需要等待数据出现。您只能通过反复检查页面的特定部分来实现这一点

您可以在phantomjs安装的examples目录或中找到一个示例。这可能也适用于通过npm phantom的phantomjs

在您的情况下,这将如下所示(缩写):

page.open(url,函数(状态){…})
只是

page.onLoadFinished = function(status){...};
page.open(url);
您可以找到以下报价:

另请参阅,以获取onLoadFinished回调的备用钩子


因为这是一个基于AJAX的页面,所以需要等待数据出现。您只能通过反复检查页面的特定部分来实现这一点

您可以在phantomjs安装的examples目录或中找到一个示例。这可能也适用于通过npm phantom的phantomjs

在您的情况下,这将如下所示(缩写):