Help us understand the problem. What is going on with this article?

Node.jsでwkhtmltoimageを使ってWebサイトのキャプチャ画像を取得

More than 5 years have passed since last update.

npmにもnode-wkhtmlというモジュールがあるけど、child_processを使ってサックリと

wkhtmltoimage/wkhtmltopdf

wkhtmltoimageは/usr/bin/wkhtmltoimageにインスコ済の前提で

wkhtmltoimage.js
var chunks = new Array();
var convert = require('child_process').spawn('/usr/bin/wkhtmltoimage', ['--format', 'jpg', '--quality', '100', 'https://www.google.co.jp/', '-']);
convert.stdout.on('data', function(chunk){
    chunks.push(new Buffer(chunk));
});
convert.stderr.on('data', function(data) {
})

convert.on('exit', function(code){
    var data = Buffer.concat(chunks);
    console.log('data:image/jpeg;base64,');
    console.log(data.toString('base64'));
});

Google先生のトップページをJPEG形式でキャプった画像がdataURL形式で取得できる
spawnのオプション配列でPNG形式にできたり、ブラウザのサイズや出来上がりの画像サイズを調整したり
convert.on('exit')のコールバックにcodeという引数があるが、これはwkhtmlto*プロセスのexit codeで0以外だと404とか色々あったことがわかる

JavaScriptの実行遅延なども含めてキャプチャ完了までに数秒オーダーで時間がかかるので、Webアプリにする場合はgearmanのworkerとして動かしたり、リクエストをXHRで投げるとかやってる

infiniteloop
「ソースコードでなんでも生み出す」なんでもない記号から、とんでもないモノを生み出す。日々技術を磨き続け、あらゆる難題に答えていく札幌のシステム会社です。
https://www.infiniteloop.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away