プログラマでありたい

おっさんになっても、プログラマでありつづけたい

プログラミング・レスで5分でサックリWebスクレイピング「kimonolabs」

 「Rubyによるクローラー開発技法」で付録か何かで書こうか悩んだ末に書かなかったのが、kimonolabsの話です。kimonolabsは、クローラー/スクレイピングをオンラインで実行できるWebサービス(SaaS)です。クローラー本を書いておいて何ですが、9割の人は自分でクローラーを作らずに、この手のサービスを利用すれば事足りると思います。(書かなかった理由は、Ruby縛りサービスの継続性とスケジュールの問題です。主に最後)
f:id:dkfj:20140813182433p:plain

kimonolabsとは?



 kimonolabsは、先述のとおりWebスクレイピングをしてくれるSaaSです。会員登録してChromeの拡張をいれれば、すぐに使えるようになります。一般的に、Webスクレイピングする場合は、次のような手順が必要です。

  1. 対象ページのダウンロード
  2. ダウンロードしたページから、特定の箇所を抜き出す
  3. 抜き出したデータの保存

 対象ページのダウンロードとデータの保存はそれほど手間ではないのですが、2番目の特定の箇所を抜き出すというのが中々やっかいです。一般的には、各プログラムの構文解析器(パーサー)を使って、xpathやCSSセレクタなので要素を指定して抜き出します。パーサーは、Ruby製のNokogiriやPython製のbeautifulsoupなど色々あります。このツールの使い方を覚えるというのと、xpathやCSSセレクタなどHTMLの要素の指定の仕方の2つを覚える必要があります。それ以前に、プログラミングの仕方を知っていないと出来ません。
 kimonolabsを使えば、このあたりを一切知らなくてもスクレイピングできるという優れ物です。対象のページをブラウザで開いた上で、kimonolabの拡張を開いて取得したい部分をマウスで選択するだけです。簡単便利です。
 私も幾つかスクレイピングのSaaSを知っていたのですが、ここまで完成度が高いものはしりませんでした。前回の、Webスクレイピング勉強会@東京で教えて貰いました。

kimonolabsの使い方 APIの登録編



 それではAmazonの商品ページを対象に、実際の使い方を試してみましょう。アカウントとかは適当に作って下さい。今回の取得対象は、このページを対象に、全体のランキングとカテゴリーごとのランキングを取得するようにします。
※ステマ

1.対象ページを開いた上で、kimonolabのchromeの拡張を起動
f:id:dkfj:20140813185212p:plain

2.取得対象を指定する
 マウスのカーソルを取りたいあたりに移動させると、黄色で選択してくれます。その上で、不要な部分があれば☓をしていけば良いです。複数指定したい場合は、kimonoのメニューの+ボタンで増やします。
f:id:dkfj:20140813185746p:plain
ちなみに、中々思い通り選択してくれなくて、イライラすることもたまにあります。

3.取得データを確認する
 メニューの右の方の、=みたいなのや<>でプレビューできます。
f:id:dkfj:20140813190340p:plain
f:id:dkfj:20140813190356p:plain

4.APIとして登録
 確認して問題なければ、Doneボタンを押してAPIとして登録します。その際に、適当に名前を付けます。
f:id:dkfj:20140813190506p:plain

5.APIの詳細設定
 通知や訪問間隔などの設定をします。
f:id:dkfj:20140813190550p:plain

kimonolabsの使い方 データの取得編



 取得したデータは、kimonoの管理画面もしくはアプリケーションIDとAPIキーを指定したURLで取得できます。
・データのバージョン指定
http://www.kimonolabs.com/api/{VERSION_NO}/{API_ID}?apikey={YOUR_API_KEY}
・時系列で取得
http://www.kimonolabs.com/api/{API_ID}?apikey={YOUR_API_KEY}&kimseries=1

 1時間ごとに取得したデータを、時系列でみた例です
f:id:dkfj:20140813182447p:plain

 データは、json,csv,rssで取得できます。データをプログラムから呼び出して、さらにゴニョゴニョするといったことも簡単にできます。

まとめ



 かなり完成度も高く、無料の範囲でも充分利用できます。今回は紹介していませんが、ページネーションなどもできます。クローラーやWebスクレイピングは、それ自体が目的には成り得ません。収集したデータをどう活用するか、そこからが本当のスタートです。だから、データ取得の部分をサービスで代用できるのであれば、できるだけ利用して楽をすべきです。ということで、今は必要でなくても、頭の片隅に記憶しておいたら良いと思いますよ。
 ついでに言うと、自作のクローラーはどういった場合に作ればよいのか?夏休みの自由研究と、既成のサービスで機能的に物足りなくなってからで良いと思います。もしくは、このサービスをキッカケにクローラーに興味をもったら、この本あたりで中でどのように動いているのか勉強するのも良いですよ。※ステマ


See Also:
『Rubyによるクローラー開発技法』を書きました
KimonoLabsと今後のサービスのあり方のはなし


参照:
オープンデータのためのスクレイピング
第1回Webスクレイピング勉強会@東京 (全3回) - connpass


Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例