我如何用PhantomJS渲染一个网站?

时间:2013-09-09 11:08:10

标签: javascript jquery phantomjs

我如何用PhantomJS渲染网站:(例如)

var page=require('webpage').create();
var ur ='http://www.sd.gov/';
function kk(){page.open(ur, function (status) {
       this.s = function(){
        var p = page.evaluate(function () {
            return document.getElementById('exampleHeader1').style.getPropertyValue("background-image").replace(/^(url)\(|\)/g,'');  
          });
        return p;
        }
        return s();
    phantom.exit();   
  });
};

1 个答案:

答案 0 :(得分:1)

Phantomjs允许您使用WebPage.Render将网页呈现给文件。这将呈现webpage.clipRect指定的整个页面或矩形 要呈现网站的一部分(HTMl元素),您可以使用element.getBoundingClientRect:这将给出HTML元素的边界框。

可能的脚本是

var page = require('webpage').create();
page.viewportSize = { width: 1600, height: 1200 };

var getElementBounds = function (elementId) {
    return page.evaluate(function (id) {
        var clipRect = document.getElementById(id).getBoundingClientRect();
        return {
            top: clipRect.top,
            left: clipRect.left,
            width: clipRect.width,
            height: clipRect.height
        };
    }, elementId);
}

var url = 'http://www.sd.gov/';
page.open(url, function (status) {
    setTimeout(function () {
        var clipRect = getElementBounds('exampleHeader1');
        page.clipRect = clipRect;
        page.render('header.png');
        phantom.exit();
    }, 1000);
});