Node.js Spookyjsを使ったクローリング




どうも高妻です。Twitterでもプログラミングのことや暗号通貨のことをつぶやいているのでよかったら覗きにきてください。  

Spookyjs

spookyjsとはヘッドレスブラウザを実現しているPhantomjsをNode.jsから使えるようにしたものです。詳細は以前のブログを参照してください。

Node.js WEBクローリング Spookyjsのメリットとデメリット

導入方法

SpookyjsはPhantomjsとCasperjsをインストールしておかないと使えないので下記npmコマンドでグローバルにインストールしておいてください。

spookyjsは下記コマンドでインストールして下さい。

サンプルコード

yahooのトップページを取得して検索を実行するコードです。下記はES6で記述しているためbabelでトランスパイルする必要があります。トランスパイルの方法はこちらを参考にしてください。

spooky.start()メソッドで指定したURLのページを取得します。取得が完了したらthen()の中のコールバック関数が呼ばれます。capture()メソッドでその時点での画面のキャプチャを取得することができます。

フォームへの入力

spooky.fill()メソッドはフォームに入力することができます。yahooの検索フォームにnodejsと入力してclick()メソッドで検索ボタンを押しています。クリックした後のページをキャプチャしたのが下記になります。

注意点として、spooky.then()内はCasperjsのスコープになるためスコープ外の変数への参照ができません。また、スコープ内はPhantomjsのヘッドレスブラウザ側で実行されるのでconsole.log()でログを表示させようとしてもNode.js側のコンソールには何も表示されません。

ログを表示させたい場合はthis.emit()でスコープ内からイベントを送信し、Node.js側で受け取って表示させるしかないです。

あと、ハマリポイントとして、then()内では//を使ったコメントアウトも使用できません。自分はこれに気づくまでにかなりの時間を使ってしまったので気をつけてください。

今回のサンプルコードはES6で書いていますのでES5に書き直すか、ES6の導入方法を下記リンク先にまとめていますので参照してください。

Node.jsでES6を導入する最短手順

おすすめ書籍

クローラー初心者には最初の書籍がおすすめです。







コメントを残す

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