LoginSignup
5
1

More than 5 years have passed since last update.

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

Posted at

スクレイピングで利用する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()を実行することで中身を出力したり、
その情報を使って処理を行ったりすることができます。

まとめ

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

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1