Nightmare.jsつーのが便利そうなんで使ってみます。

環境はWindows7

1
2
3
4
5
6
$ node -v
v6.11.3
$ npm -v
4.1.1
$ python --version
Python 3.6.2

package.json作成とnightmareインストール

1
2
3
$ npm init
($ git init)
$ npm install --save nightmare

Nightmare動作確認

まずは動作確認として、配布元のサンプルを動かしてみます。

importとかエラーになるので、requireに変える。うちの環境では読み込み確認しないとエラーが出たのでwaitを追加。

実行

1
$ node sample1.js

なんか出て勝手に検索してくれます。

DOM読み取り

Static

DOM解析のためcheerioをインストール

1
$ npm install cheerio --save

evaluateでbodyの中身をざっくり返して、thenで処理。

最初evaluateの中で色々処理しようとしましたが、どうもdocumentの動きが普通のDOMオブジェクトとなんとなく違う感じで、かつVS Codeのブレークポイントも利かなかったので、evaluateの中は極力シンプルにした方がよさそうです。

1
2
$ node sample2evaluateStatic.js
Nightmare evaluate sample

サンプルのhtmlは

ちなみにwebサーバはpython と http.serverを使ってます。

htmlを適当なフォルダに作成して(例ではwww)

1
2
$ cd www
$ python -m http.server

Dynamic

SPAとかJavaScriptで操作されたDOMがちゃんと読めるかやってみます。

HTMLは

inputに入力した値でoutputが動的に変わります。inputへの入力もnigthmareを使います。

DOMの読み込みはStaticと特に変わらず。

実行してみると、入力した値もしっかりとれてます。

1
2
$ node sample3evaluateSPA.js
Hello ore-ore!

すごいね!

もうちょっと実用的なの作ってみたい。つづくかも