PhantomJS: web screen capture

phantomjs2

Už jste někdy potřebovali automaticky a sbírat náhledy webových stránek z prohlížeče (screenshoty)? Pak asi nejjednodušším řešením je použití PhantomJS, který, jak o sobě uvádí, je full web stack, no browser required řešením:

/*global phantom */

var webPage = require('webpage');

var urlList = [
    'http://www.eshop-plus.cz',
    'http://www.idnes.cz',
    'http://pepa.holla.cz'
];

var done = 0;
urlList.forEach(function(url, index) {
    var page = webPage.create();
    page.viewportSize = {
        width: 1024,
        height: 768
    };
    page.clipRect = {
        top: 0,
        left: 0,
        width: 1024,
        height: 768
    };
    page.settings.userAgent = "Phantom.js bot";
    console.log(index, url);
    page.open(url, function(status) {
        console.log(url);
        if (status === 'success') {
            page.render(index + '.png');
        }
        done++;
        if (done === urlList.length) {
            console.log('hotovo');
            phantom.exit();
        }
    });
});

Výsledkem scriptu je sada PNG obrázků se screenshoty požadovaných webových stránek. Jedná se o rychlý návod jak na to. Samotný script by se dal ještě dopracovat…
PhantomJS se dá použí ke spoustě dalších věcí. Já jej používám např. i pro vytváření PDF dokumentů na webovém serveru.