酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

Casper.js で スクレイピング

JavaScriptなどを多用しているような動きのあるページをスクレイピングしたい場合に使えるテクニックです。 Casper.js は npm で比較的簡単にインストールできそうなので、サーバ側でも簡単に実現できるのでオススメです^^


Installation

casperjsのインストール方法はこちら。

1
npm install casperjs -g

Source Code

Casper.js を使ってページを取得するスクリプトはこちら。 今回は引数にURLとHTMLの保存先を指定できるようにしてみました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// scrape.js
var casper = require('casper').create();
casper.userAgent('Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19');

var url = casper.cli.args[0];
var outputPath = casper.cli.args[1];

casper.start(url);

casper.then(function() {
  casper.wait(5000, function() {
    // Get HTML
    var html = this.evaluate(function(){
      return document.querySelector("html").outerHTML;
    });

    // Save HTML
    var fs = require('fs');
    fs.write(outputPath, html, 'w');
  });
});

casper.run();

あとは下のコマンドを呼び出せば対象URLのHTMLが保存されます。

1
casperjs scrape.js http://www.ugtop.com/spill.shtml /tmp/casper_scraped3.html

Happy Hacking!

Special Thanks

おすすめの書籍