ScraperWikiをつかってみた
はじめに
もうずいぶん前のネタになりますが、2011年10月にCode4Lib Journalというところに、
という記事をのせてもらいました。
記事の内容としては、検索やタギングの場面で「各種キーワードセット(ここでは典拠や件名標目)」を活用してみようよという話で、その足がかりとして「covo.js」というJavaScriptライブラリを作ってその「各種キーワードセット」を簡単に呼び出せるようにするところからはじめてみました。実際にはじめてみると「各種キーワードセット」がウェブ上にあったりなかったり、あっても使いづらかったりするので、記事中では「各種キーワードセット」の状態を下記の4つにざっくり場合分けし、それぞれクライアントサイドJavaScriptで処理するためのやり方を記事中で整理してみました。
- Pattern 1: Web API with JSONP
- Pattern 2: Web API without JSONP
- Pattern 3: Without Web API
- Pattern 4: Not on the Web
このPattern 3でキーワードセットがウェブ上に確かに存在するけれどもプレーンHTMLでどうにも使いづらいよーというものをJavaScriptで読み込むためのひとつの方法としてScraperWikiを用いたやり方を紹介しています。まず、このScraperWikiというサービスを使って事前にHTMLから必要な情報をスクレイピングしておきます。ScraperWikiでスクレイピングしたデータはJSON形式でデータを吐き出してくれるのでJavaScriptで処理できますよー、という話です。
ScraperWikiに関する日本語記事
「スクレイピングするなら ScraperWiki 使うといいよ」
といった秀逸な記事がありますのでぜひそちらもご覧ください。
ScraperWikiの使い方
無料プランと有料プラン
ScraperWikiは基本的には無料で使えます(2012/4/22 現在)。有料プランにするとprivateモードで使えたり、スクレイピングの頻度を「1時間ごと」に設定できたりするようです。ですので、無料プランで使っている場合は、Scraperのスクレイピング用のコードもデータストアのデータもすべて公開、ということになります。
Scraperと二つのツール
基本的に必要な機能はすべてScraperWikiが備えていますので必要な環境としては「とりあえずブラウザさえあれば大丈夫」です。実際の作業の流れとしては、まずここでアカウントを作りましょう。名前, ユーザー名, パスワードを設定し利用規約に同意すればアカウントが発行されます。ログインできたらさっそく「Scraper」を作ります。このScraperというのは、たとえば「今日は○○からスクレイピングして○○のデータセットを作りたいからScraperを一つ作るか」という感じで、スクレイピングのターゲットごと、あるいは結果として作られるデータセットごとに一つ作るようなイメージを思い浮かべていただけると分かりやすいかと思います。そのScraperごとにオンラインコードエディタとデータストアという二つのツールが用意されています。
という流れで進めていきます。
コーディング
Scraperを作ったらスクレイピングするためのコードを書きましょう。ScraperWiki上で実行できるプログラムは、
の3つです。
これが実際のオンラインエディタのスクリーンショットです。こんな風にオンラインエディタを使ってがしがしコードを書くことができます。もちろん手元のエディタで書いてコピペしても大丈夫です。コードを書き終えたら「Run」ボタンで実行しデータストアにスクレイピングしたデータをがんがん記録していきます。
スケジュール
スクレイピングの対象となるターゲットは更新されないものもあれば、更新されるターゲットもあってさまざまだと思います。こうした「スクレイピングターゲット先の更新」にも対応できる仕組みになっていて、各Scraperごとに5種類のスケジュールを設定して、スクレイピングの頻度を設定することができます。
- 手動 (Don’t schedule)
- 毎月 (Run every month)
- 毎週 (Run every week)
- 毎日 (Run every day)
- 1時間ごと (Run every hour) //有料プランのみ
データストアとWeb API
データストアはSQLiteなので保存されたデータは、下記のようなSQLを発行し取り出すことができます。
select * from `swdata` limit 10
また、データを取り出す際に以下の4つのデータ形式を指定して取り出すことができます。
こうしたSQL文の発行とデータ形式の指定はWeb APIを通じて行うことができます。
Viewというもう一つの機能
今回はスクレイピングをするためのコードをオンラインエディタで書いて実行してデータストアに記録する、という「Scraper」機能を紹介しました。実は、このScraperとは別に「View」という機能があります。そちらを使うと各データストアのデータを横断して処理し、さらに細かいデータハンドリングが可能になるようです。至れり尽くせりとはまさにこのことです。
かんそう
感想としては「使っててめちゃめちゃ楽しい」です。これに尽きます。単純にスクレイピングするだけなら別にわざわざScraperWikiを使う必要もないのですが、スクレイピングしたデータをデータストアに保持し、Web APIを通じてあれこれ引き出せるところがかなりcoolでした。データストア上のデータはSQLで取り出せるだけでなく「View」機能までついていて可能性がぐんと広がります。また、Documentもそれなりにそろってますし、ツールとして親切設計で使っていてストレスを感じなかったです。アイディア次第でいろいろなシーンで活用できる可能性を秘めたWebサービスではないかと思いました。楽しいですよ。ぜひ。