使用JavaScript

时间:2017-06-08 08:10:33

标签: javascript phantomjs

到目前为止,我已经在网上搜索了一个没有运气的解决方案。我知道这是一个记录在案的问题,但我只是想加载一个网页而且所有的回复都是“这种情况发生了,试图在200页上进行测试”。

我试过了:

page.settings.loadImages = true; page.settings.loadplugins = false;

我添加了``page.close()`,尽管就像我说的那样,它现在只有一个URL。

我也尝试将loadImages设置为false。当我移除我的一行JavaScript时(例如将其替换为document.title,它工作正常,但只要该行存在,内存使用量就会弹到1000MB,然后退出。

我唯一的目标是检查页面上是否存在某个元素。我该如何解决这个问题?我在网上找到的解决方案都没有为我工作。

有问题的代码:

var system = require('system');
var page = require('webpage').create();
page.settings.userAgent = 'Chrome/52.0.2743.116';
var url = 'http://www.example.com/';
var ending = system.args[1];
ending = encodeURIComponent(ending);
url = url + ending;

page.settings.loadImages = false;
page.settings.loadplugins = false;

page.viewportSize = { width: 1680, height: 1050 };

page.open(url, function(status) {
setTimeout(function(){
  var elem = page.evaluate(function() {
    return $(".primary-info")[0];
  });
  if(!elem){
    console.log('no image found');
    page.render(ending+'.png');
      }
    page.close();
    phantom.exit();
      }, 5000);
});

1 个答案:

答案 0 :(得分:1)

不要只返回整个对象,可能有很多属性。只采取必要的措施:

  var elem = page.evaluate(function() {
    var data = {};
    var item = $(".primary-info")[0];
    data.title = item.value;
    data.color = item.style.color;
    return data;
  });