さまよえる、Android

Androidのプログラミングで便利なことや残しておきたいことを残しておく。もしオススメのライブラリがあったら教えてくださいね。

Rubyによるクローラー開発技法を読みはじめた。

プログラム楽しい

クローラーという言葉に惹かれ、Rubyは未経験ながら「Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例」を購入した。読みはじめて1時間ぐらい、サンプルプログラムを元に色々と修正して動かしてみた感想として、最近はVagrantやChef、振舞駆動開発などプログラム以外の勉強に時間を費やしていたので、こういったプログラムを書く時間が取れなかったのでめちゃくちゃ面白い。通販のサイトからクローラーを介して在庫や値段情報を取得したりして遊んでます。

Rubyワカンネ。

一応、Rubyの基礎的なこともP12に書いてます。

全体の内容

正規表現やソケット通信に特化した本ではない。1からクローラー作って仕組みを学ぶというより、目的からライブラリを使い分けて、50行のコードでデータを収集して実生活に活かすLife Hack向け。P342に書いてあるようなヤマト運輸の追跡番号とGoogleカレンダとの連携方法など私生活で役立つ情報満載で、しかも極力ライブラリを使って処理しているのでコードの行数が少ないのがいい。また岡崎図書館事件の影響からか、こういうことは法律的にOK / NGなことまで説明がある。責任持ってクローラー作りましょうということですね。そのほかにも取得したデータをデータベースに保存する方法や、並列処理して効率良くクローラーを動かす、定期的にデータを取得する、検証サイトに負荷をかけてアクセス制限されないテクニック、ブラウザ(JS、ログイン、画面遷移)を使わないと取得できないサイトはどうすればいいのか、認証、ユーザーエージェント問題、iTunes Storeのようなブラウザがはじかれてしまう場合など、作者がハマって解決したことが、よくまとまってます。専門用語が出てきた後に、かならず素人にもわかりやすく補足してくれるので読みやすいです。注意点として結構ボリュームがあり文字数が多いので、どこから読んでいいのかわからない。1ページ目から読むと面白い箇所まで進まないでドロップアウトする可能性があるので、興味ある箇所から見ていったほうがいいと思う。  

環境を整える。

インストール方法はWindowsMac両方説明がある。Webにある情報を巡回して取得するのにAnemone、取得したHTMLを解析するのにはNokogiriをつかう。この2つをメインに、目的に応じてライブラリを追加するイメージ。

どっからやるの。

2つのライブラリをインストールして、簡単なサンプルを動かして基本的な使い方のイメージが出来た後に、興味のあるページをつまんで見るのがオススメ。Anemone、Nokogiriのインストール方法は、MacだとP78に説明がある。あとWebサイトから欲しいデータを取得するタグのクラス名などがわからないと、データの取得が出来ない。ソースを見て確認するのは手間なので、ブラウザの右クリック機能をお勧めする。具体的な方法は、P183を参照。 

クローラーの種類

クローラーのライブラリは、AnemoneタイプとCapybaraタイプの2つがあり、CapybaraはFirefoxと連動してブラウザをプログラムから操作して情報を取得することができるブラウザータイプのクローラ。フォームに名前とパスワードを入力してログイン先の情報を取得することができる。またJavascriptにも対応しており、TwitterのようなJavascriptで遅延ロードしているタイプのサイトにも対応できる。Capybara関連のインストールは、P116を参照。 

運用方法 

クローラ作ったら、定期的に実行して情報収集させたい。ノートパソコン上だとインターネットの環境とか電源の問題もある。その辺の解決策としてAWSで運用する方法がある。AWSの環境構築はP391を参照。実行結果もGmailのライブラリを使って通知できる。

この本はお得

やっぱり、1日のうち大半はネットを見て過ごすわけで、さっくと簡単にクローラーが作れれば、情報収集を自動化できて便利だし、それ以上にプログラム書くのって楽しいなっと思いました。