PuppeteerによるWEB Scraping on Windows 10

Table of Content

WEB Scrapingの情報は書籍を含めたくさんありますが,[cci]JavaScript[/cci]によって動的に生み出されるページのハンドリングに苦労しました.[cci]Selenium + PhantomJS[/cci]が定番のようでしたが,うまくいかない場合が多く,人がマニュアルで行う操作を忠実に再現するアプローチが必要となる場合もあるようです.このような観点で,[cci]Chrome[/cci]専用の[cci]Puppeteer[/cci](操り人形師の意味で,パピティアと発音)が有効でしたので,そのインストール方法と留意点をまとめておきます.こちらのページを参考にさせて頂きました.

Git for Windowsのインストール

[cci]Git-bash[/cci]を使うため,[cci]Git for Windows[/cci]をこちらのサイトからダウンロードし,デフォルトのままインストールします(ただし,デスクトップアイコンは作るを選択しておいた方が便利です).

nodistのインストール

nodistのGithubから[cci]NodistSetup-v0.8.8.exe[/cci]をダウンロードし,普通にインストールします.インストールが完了しましたら,[cci]Git-bash[/cci]のターミナルを起動し,以下のようにバージョンを確認します.
[cc]
$ nodist -v
0.8.8

$ node -v
v8.11.1

$ npm -v
4.0.5
[/cc]

Node.jsのアップデート

次に,[cci]Git-bash[/cci]を一度閉じ,再び起動します.再起動しないと,以下がうまくいきませんでした.こちらのサイトで[cci]Node.js[/cci]の[cci]Status[/cci]が[cci]Active LTS[/cci]となっているものの[cci]Releaseバージョン[/cci]を調べます.この記事を書いているときは,[cci]8.x[/cci]となっていました.以下のようにして,アップデートします.
[cc lang="bash"]
$ nodist dist
0.1.14
0.1.15
...
途中省略
...
8.11.0
8.11.1
9.0.0
9.1.0
9.2.0
9.2.1
9.3.0
9.4.0
9.5.0
9.6.0
9.6.1
9.7.0
9.7.1
9.8.0
9.9.0
9.10.0
9.10.1
9.11.0
9.11.1
10.0.0
[/cc]
[cci]8.x[/cci]に相当する最新版は[cci]8.11.1[/cci]であることが分かりましたので,これにアップデートします.
[cc lang="bash"]
$ nodist 8.11.1
[/cc]
バージョンを確認しておきます.
[cc lang="bash"]
$ node -v
v8.11.1
[/cc]

Yarnのインストール

以下のようにパッケージマネージャyarnをインストールします.
[cc lang="bash"]
$ npm install -g yarn --scripts-prepend-node-path
[/cc]

WEB Scrapingを実行するフォルダを作成

実際にWEB Scrapingを実行する([cci]JavaScript[/cci]のコードを保存する)フォルダを以下のように用意します.
[cc lang="bash"]
$ pwd
/c/dat/Puppeteer/mpos
[/cc]

Puppeteerのインストール

用意したフォルダに移動し,[cci]package.json[/cci]を作成し,続けて[cci]Puppeteer[/cci]をインストールします.
[cc lang="bash"]
$ winpty yarn.cmd init -y
$ yarn add puppeteer
[/cc]
以上でインストールは終わりです.

JavaScriptを動かす

JavaScriptのコードを作成し(例えば,[cci]test.js[/cci]),実行します.
[cc lang="bash"]
$ node test.js
[/cc]
なお,[cci]Anaconda[/cci]や[cci]Miniconda[/cci]のプロンプトでも同様に[cci]JavaScript[/cci]を実行できます.私は[cci]Jupyter Notebook[/cci]上で[cci]Python[/cci]からsubprocess経由で[cci]node[/cci]を呼び出しています.

test.jsの例

Yahoo! Japanのサイトのトップページの画像をpngとして出力する例です.
[cc lang="javascript"]
const puppeteer = require('puppeteer');
(async () => {
const TARGET_URL = 'https://yahoo.co.jp';
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(TARGET_URL);
await page.screenshot({path: 'example.png', fullPage: true});
await browser.close();
})();
[/cc]
Windowsのローカルフォルダ[cci]C:\home\test.html[/cci]を読み込むには[cci]TARGET_URL = [/cci]の部分を以下のように書き換えます.
[cc lang="javascript"]
const TARGET_URL = 'file://C:/home/test.html';
[/cc]
Cドライブを指定している部分のコロン[cci]:[/cci]は必須です.

yarnでアップグレード

こちらのページが参考になります.Git Bashのターミナルでインストールを行ったディレクトリに移動します.
[cc lang="bash"]
$ pwd
/c/dat/Puppeteer/mpos
[/cc]
ローカルのパッケージ全体のアップグレードは以下のようにします.
[cc lang="bash"]
$ yarn upgrade
[/cc]
ローカルのパッケージを指定してアップグレードするには以下のようにします.
[cc lang="bash"]
$ yarn upgrade [package]
[/cc]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください