为什么phantomjs无法获取页面内容

代码:

/*global phantom*/

"use strict";

// 单个资源等待时间,避免资源加载后还需要加载其他资源

var resourceWait = 500;

var resourceWaitTimer;

// 最大等待时间

var maxWait = 5000;

var maxWaitTimer;

// 资源计数

var resourceCount = 0;

// PhantomJS WebPage模块

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

// NodeJS 系统模块

var system = require('system');

// 从CLI中获取第二个参数为目标URL

var url = system.args[1];

// 设置PhantomJS视窗大小

page.viewportSize = {

    width: 1280,

    height: 1014

};

// 获取镜像

var capture = function(errCode){

    // 外部通过stdout获取页面内容

    console.log(page.content);

    // 清除计时器

    clearTimeout(maxWaitTimer);

    // 任务完成,正常退出

    phantom.exit(errCode);

};

// 资源请求并计数

page.onResourceRequested = function(req){

    resourceCount++;

    clearTimeout(resourceWaitTimer);

};

// 资源加载完毕

page.onResourceReceived = function (res) {

    // chunk模式的HTTP回包,会多次触发resourceReceived事件,需要判断资源是否已经end

    if (res.stage !== 'end'){

        return;

    }

    resourceCount--;

    if (resourceCount === 0){

        // 当页面中全部资源都加载完毕后,截取当前渲染出来的html

        // 由于onResourceReceived在资源加载完毕就立即被调用了,我们需要给一些时间让JS跑解析任务

        // 这里默认预留500毫秒

        resourceWaitTimer = setTimeout(capture, resourceWait);

    }

};

// 资源加载超时

page.onResourceTimeout = function(req){

    resouceCount--;

};

// 资源加载失败

page.onResourceError = function(err){

    resourceCount--;

};

// 打开页面

page.open(url, function (status) {

    if (status !== 'success') {

        phantom.exit(1);

    } else {

        // 当改页面的初始html返回成功后,开启定时器

        // 当到达最大时间(默认5秒)的时候,截取那一时刻渲染出来的html

        maxWaitTimer = setTimeout(function(){

            capture(2);

        }, maxWait);

    }

});

我想用phantomjs获取10秒以后的页面内容
但是每次都拿到的是一开始的页面 也就是前端渲染前的页面
为什么?要怎么做?

阅读 2.1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题