«前の日記(2006年11月20日) 最新 次の日記(2006年11月23日)» 編集

ema log


2006年11月21日 [長年日記]

_ [Ruby][Web Service] Ruby で mixi にアクセスするスクリプト

あんまり、一気にアクセスすると怒られるので、負荷をかけないような用途にどうぞ。

気晴らしに書いてみた。ほんとは scrApi を使ってみようという自分内企画だったのだけど、使い方がイマイチわからなかったの、hpricot を利用することになった。scrApi のマニュアルが英語なので、めんどくさくなったんです。

どうやら、WWW::Mechanize alike in ruby [RubyForge] っていうライブラリがあるらしい。これを使うと、ブラウザの挙動をシミュレートできる。RubyGems が入っていれば、インストールは以下で完了する。

gem install mechanize

mecanize.rb で mixi diary を自動取得する [World Wide Walker] を参考に、mixi にアクセスするクラスをを書いてみた → mixi.rb。ログインの正否判定は backup_mixi [いぬビーム] から写させてもらった。

使い方の例は update_mymixi.rb を参照。Mixi.login を呼び出せば、Mechanize がセッションを保持してくれるので、GET、POSTのリクエストが可能になる。

Mechanize が hpricot という、HTML パーザを通してくれるので、スクレイピングも簡単にできる。若干 CSS のセレクタとは記述が異なる部分があるようだが、@ が増えるだけなので、許容範囲。「マイミク一覧」から、<td valign="middle"> なエレメントを列挙して、ごにょごにょしてる訳です。ログインに使用する認証情報は config.yml に書いてください。

なお、mixi の HTML の文字コードは EUC-JP なので、Windows 上で実行すると化けます。

References
mecanize.rb で mixi diary を自動取得する [World Wide Walker]
backup_mixi [いぬビーム]