首页 > 解决方案 > 加载网页不完整 Phantomjs

问题描述

我在捕获和加载网页时遇到问题: https ://myaccount.nytimes.com/auth/login

缺少用户名和密码字段以及提交按钮。可能是什么原因?谢谢

正如您所看到的,下面列出的代码会一一等待要加载的所有资源。

我没有编写代码,但是它非常出色并且经过了许多人的测试。原件可以在这里找到: https ://gist.github.com/cjoudrey/1341747 (所有的功劳都归功于编写它的人。)

    var resourceWait  = 3000,
    maxRenderWait = 30000,
   url = 'https://myaccount.nytimes.com/auth/login'; //'https://twitter.com/#!/nodejs';

   var page          = require('webpage').create(),
   count         = 0,
   forcedRenderTimeout,
   renderTimeout;

   page.viewportSize = { width: 1280, height : 1024 };

   function doRender() {
      page.render('twitter.png');
      phantom.exit();
   }

   page.onResourceRequested = function (req) {
      count += 1;
      console.log('> ' + req.id + ' - ' + req.url);
      clearTimeout(renderTimeout);
   };

   page.onResourceReceived = function (res) {
     if (!res.stage || res.stage === 'end') {
        count -= 1;
        console.log(res.id + ' ' + res.status + ' - ' + res.url);
        if (count === 0) {
           renderTimeout = setTimeout(doRender, resourceWait);
        }
     }
   };

  page.open(url, function (status) {
     if (status !== "success") {
        console.log('Unable to load url');
        phantom.exit();
     } else {
        forcedRenderTimeout = setTimeout(function () {
           console.log(count);
           doRender();
        }, maxRenderWait);
     }
  });

标签: loginresourcesphantomjsloadingwebpage

解决方案


推荐阅读