忍者ブログ

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

CasperJSでスクレイピング

色々あってnode.jsと触っているのですが、調べていたらスクレイピングでいい感じに使えそうなCasperJSというのを見つけたのでちょっち触ってみました。
やってみたらスクレイピングするより、コマンドライン引数取得して使えるようにする方がしんどかったです。
通常使える(らしい)「process.argv」を使おうとすると何か怒られるので、あれこれ調べたら

http://casperjs.readthedocs.org/en/latest/cli.html

で、casper.cli.argsてのを使うらしいです。
たったこれだけなのに5時間以上とかかかりました、、、アホなのか。
ジョジョ見てアルスラーン見て笑点見て、鉄腕DASHと花もゆまで見てようやく出来ました。
時間かかり過ぎだこん畜生。
やっぱりマニュアル見ないといかんです。メリケン語だったけど('A`)

以下、今回へろへろ作ったサンプル。
指定のURLにアクセスしてフォームの指定要素にテキスト入れてから要素取得します。
送信ボタンのクリックとかも出来るらしいですが、今回はしていません。

casper  = require('casper').create();

//コマンドラインの引数をスペース区切りの文字列に変換

var args = casper.cli.args;

var argsStr = args.join(" ");

var url = 'http://www.hoge.co.jp';

var formSelector = "#fuga > form";

var itemAndValList = { "item" : argsStr };

var resultSelector = "#result li";

casper.start(url,function(){

//フォームに値を入力

casper.fill(formSelector,itemAndValList);

//waitの後、表示結果を取得

casper.wait(500, function() {

    var list = casper.getElementsInfo(resultSelector);

//取得結果を配列に格納したのち、json形式で出力

    var textList = new Array();

    for(var num in list){

    textList.push(list[num].text);

    }

    console.log(JSON.stringify(textList));

});

});

casper.run();


URLとか要素のselectorとかは適当な奴です。
お約束ですが、これは実験用のスクリプトなので、もし参考にされる場合は適宜wait入れるとかして、相手のサーバに負荷をかけないにしてください。
相手のサーバ落とすの駄目、ぜったい。

PR

この記事にコメントする

お名前
タイトル
メール
URL
コメント
絵文字
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
パスワード