スクレイピングで利用するcasperjs。
Webページからデータ取得する際に役立つライブラリで、自動化に重宝します。
開発の中で使えそうなちょっとしたtipsをまとめておきます。
基本的なことだとは思いますが、これから始める方の助けになればと。
動作環境
$ casperjs --version
1.1.3
環境構築はこちらを参考にさせていただきました。
http://blue1st-tech.hateblo.jp/entry/2016/04/08/005601
動作を確認する
何の開発をやるのでも必須なので、まずはここから。
公式のQuickStartだとファイル先頭に下記のように書いてcasperインスタンスを生成しますが、
このままだとログ出力は特にされず、自分でthis.echo('ボタン押す')
とか書いてログを出したりします。
var casper = require('casper').create();
これを
var casper = require('casper').create({
verbose:true,
logLevel:"debug"
});
このように変えます。
これで動作(遷移URL, 実行されたイベント, ステップ状況)がログ出力されるようになります。
詳しくは http://docs.casperjs.org/en/latest/debugging.html
また、操作時の画面の表示を確認したい場合はcapture機能が役に立ちます。
this.capture('when_ok_button_clicked.png')
確認したい処理の後ろで上記を実行すると、画面キャプチャがカレントディレクトリに出力されます。
ログインする
レポート取得の自動化などを行うときにログイン処理を扱うケースが多いと思います。
ログイン処理を行う際は多くの場合でcookieのonを要求されるので、有効化する必要があります。
$ casperjs sample.js --cookies-file=cookies.txt
実行オプションをつけることでcookie情報を指定ファイルに書き込むことができます。
これでcookieを求められるページでも処理が続行可能になります。
リクエスト内容を見る
ページ中で送られているリクエストの詳しい状況を知りたい場合。
下記のような形で実現できます。
casper.on('page.resource.requested', function(requestData, request) {
require('utils').dump(requestData);
});
casper.on('page.resoure.requested', callback)
は何かしらのリソースがリクエストされた際にリクエスト内容を引数としてcallbackを実行します。
objectが返って来るのでutils.dump()
を実行することで中身を出力したり、
その情報を使って処理を行ったりすることができます。
まとめ
ログの出力を詳細にしたり、リクエスト状況を把握できたりすると、開発のスピードが速くなります。
何かの役に立てば幸いです。