1

我如何使用 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();   
  });
};
4

1 回答 1

1

Phantomjs 允许您使用WebPage.Render将网页呈现到文件中。这将呈现整个页面或由pages.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);
});
于 2013-09-11T07:52:07.687 回答