Puppeteerを使ってみた
株式会社ココロファン - エンジニアリング事業部所属のhazamaです。
サイト制作・運用業務をメインに行っています。
業務の一環でサイトのスクリーンショットを取得することがあるのですが、便利なものがないか探しているうちに
「Puppeteer(パペティア)」というものを見つけたので、早速試してみようと思います。
Puppeteerとは
Puppeteer is a Node library which provides a high-level API to control Chrome or Chromium over the DevTools Protocol. Puppeteer runs headless by default, but can be configured to run full (non-headless) Chrome or Chromium.
参考:https://github.com/puppeteer/puppeteer
とまぁ、こんな感じの説明があるのですが、
「ChromeまたはChromiumを制御できるAPIを提供するGoogle製Node.jsライブラリ」ということらしいです。
環境
- Windows 10 Home
- Node.js v16.2.0
- npm 7.13.0
- Puppeteer 10.0.0
使用準備
Node.jsをインストールする
インストールはこちらから
作業場所を準備する
続いて作業場所を準備します。
適当な場所で構わないので作業ディレクトリを作成します。
$ mkdir screenshot
package.jsonを作成する
作成時、本来は設定する際に色々聞かれますが、今回は特に設定なくても問題ないので次のコマンドで作成します。
$ npm init -y
Puppeteerのインストール
package.jsonが作成できたら、いよいよPuppeteerのインストールです。
$ npm install puppeteer
jsファイルの作成
Puppeteerのインストール後、起動させるためのjsファイルを作成します。
$ touch screenshot.js
jsファイルの中身は次のように記述します。
ちなみにこの記述はPuppeteerがGit hubにソースコードをあげており、そちらに記載されているものをそのまま使用しています。
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com'); //スクリーンショットを取りたいURLを記述
await page.screenshot({ path: 'example.png' }); //スクリーンショットのファイル名を記述
await browser.close();
})();
上記を実行するとザックリこんな感じのことをしています。
- Chromiumを起動
- 指定したURLに移動
- 指定したファイル名でスクリーンショットを保存
- Chromiumを閉じる
jsの記述が終わったらコマンドラインで実行してください。
$ node screenshot.js
実際に動かしてみる
試しにgoogleのスクリーンショットを取得してみようと思います。
まずは先程のjsでURL部分を変えます。保存される時の名前もわかりやすくしておきましょう。
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.google.com/'); //←googleのURLを記述
await page.screenshot({ path: 'screen_google.png' }); //←保存時のファイル名
await browser.close();
})();
次にjsがあるディレクトリまで移動してコマンドラインで実行します。
//screenshotディレクトリまで移動
$ cd C:\Users\ユーザ名\Desktop\screenshot
//screenshot.jsを実行
$ node screenshot.js
実行するとコマンドラインでは特に何も起きていませんが、screenshotのディレクトリを見ると
「screen_google.png」で保存されていました!
最後に
Node.jsのライブラリと聞いて敷居が高いかなと思っていましたが、意外とすんなり導入できました。
スクリーンショットを取るにあたって、今はchromeの拡張機能やフリーのソフトでも性能のいいものがありますが、puppeteerは差分を比較するなどの機能もあるみたいなので、今後研究を重ねたいと思います。
Author And Source
この問題について(Puppeteerを使ってみた), 我々は、より多くの情報をここで見つけました https://qiita.com/c_hazama/items/d0a9e886032e52b3bc31著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .