Posted at

casperjsでの開発をやりやすくするちょっとしたtips

More than 1 year has passed since last update.

スクレイピングで利用する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()を実行することで中身を出力したり、

その情報を使って処理を行ったりすることができます。


まとめ

ログの出力を詳細にしたり、リクエスト状況を把握できたりすると、開発のスピードが速くなります。

何かの役に立てば幸いです。