spookyjsでクローリングの際に任意のjsソースを読み込む方法

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

これまでのクローリングでは、fsライブラリを使って、事前にローカルにあるjsを読み込んでstringとして保持してそのままevalしていたのですが、evalをするという後ろめたさと、string分のメモリの無駄使いが少しだけ気に入らなかったのですが、casperjsでちゃんとその辺を考慮して機能があったので、使い方と、機能の調査を行なって見ました。
 

便利にクローリング作業を行いたい人の参考になれば幸いです。

ソースコード

事前にローカルにソースコードを用意します。※雑なコードですみません。とりあえず確認のためのソースです。
 

 

続いてspookyjsの実ソースコードです。
 

 

ソース内の “casper: { clientScripts: [“hoge.js”],” 箇所がローカルjavascriptファイルを読み込んでいる箇所なんですが、これを実行すると以下の様になります。
 

 

jQueryが入っていないサイトで、強制的に埋め込む様な場合に便利ですね。

色々調査

普通にscriptタグを作ってHTMLに追記されているのかと思ったのですが、実態はソースコードには反映されていないようですね。
 

this.evaluate(function(){…});
という中に以下を記述するとよくわかります。
 

 

このプログラムを実行すると以下の様な返り値がありました。
 

 

送り込んだjsが含まれていないので、クローラー内部で別途に実行しているのがわかります。
 

さらに、このソースファイルの送り込みは、内部データでしか対応しておらず、
“hoge.js”を”http://hoge.com/hoge.js”と、公開サーバーに設置して読み込むという事はどうやらできないようです。
 

一歩踏み込んだ使い方

GoogleChromeブラウザを使っている人は、「機能拡張」プラグインで便利なアドオンオプション機能を搭載して作業効率化を行なったりしていることと思いますが、ブラウザでの便利機能はjavascriptで構成されている事が最近では多いです。
 

機能拡張のようなローカルjavascriptを作っておく事で、通常クローリングでブラウザ表示した内容を取得する際に、データを整形させるライブラリの様な機能拡張や、任意処理をするライブラリを整えておくだけでspookyjsの中でコーディングする内容が簡易にする事ができるので、この領域の構築をして効率アップしてみるのも面白いかもしれませんね。
 

Leave a Reply

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