RubyのMechanizeライブラリつかってみた
こんにちは. 知り合いの人が最近Rubyを始めたようです. かくいう僕はJavaScriptばっかり使ってて, このままじゃアカンと思い, 久しぶりにRubyを触ってみました. 触る動機づけにRubyのMechanizeライブラリを使ってみたのでそのまとめ.
検証環境:
OSX 10.7
Ruby 1.9.2
Mechanize 2.4
Mechanizeって?
Webページのアクセスと集約ができるライブラリです. ログインが必要なサイトにアクセスして, スクレイピングとかできちゃうよ! これでファイヤーエンブレムの先行販売のページに張り込まなくてすむよ!!
インストール
gem install mechanize
ちなみに僕はrvmを利用しています.
ログピ!から友達のログを取得してみよう
APIが存在するWebサービスで試しても面白くないので, APIがないpaperboy&co.のログピ!で検証します.
# coding: utf-8 require 'mechanize' agent = Mechanize.new page = agent.get('http://logpi.jp/signin') form = page.forms.first form.account = 'あなたのID' form.password = 'あなたのパスワード' # フォームに与えた入力でsubmit home = agent.submit(form) # home.body ページのHTMLを取得 # 「友達のログ」タブをクリック friend = home.link_with(:text => '友達のログ'.toutf8).click # class属性が「tltext」の要素を取得 friend.search('.tltext').each do |log| puts log.inner_text.gsub!(/[\r|\n|\t]/, '') end
どうですか? コードの解説が不要なくらいシンプルに記述できました.
Rubyは「動く擬似コード」の異名がありますが, まさしくですね...
実行結果
こんなかんじで各ログの内容が出力されます.
のだめって深いやねえなんかそうだよなーって納得するジャンルは違うし、やってる年数もまだ浅いけど、音楽って不思議だよなーって思う あかぺらーいんあかぷるこーどぅっとぅっとぅーるっ♪ 立夏の夕焼け 暦の上では今日から夏です。春の終わり、夏のはじまり。 私一人で走りに行くときは、ポケットにiPhoneと500円か千円札持って走ります。終わったら買い食いします三(・ω・) 竹タップはリズムと団結力で、思わず見入ってしまった。月面のやつは見てなかったけど、ダイジェストでも綺麗だったからみたいな。 マジシャンがハトを出すというのを、ハトがマジシャンを出すという工夫・・・!理解すると深い!! マリックのテーマが違う!! みんな今日は空を見上げていますね。 今日は大きな月ですね。明日が満月だけど、立夏の今日の月は満月のようで綺麗です。^^そういえば先日、心理学の授業を受けた時に「みなさんは一体、月をどれくらいの大きさでみていると思いますか?」という問題が出ました。実験してみ... なんかゆれた 代々木公園でバドミントン。無表情でラリーを続ける私たち。 そんなことなかった! Android appのいくつかが強制的にアンインストールされたよ。。ウイルス? スーパームーンの時間...! ドーナツ&シー 少しすっきりしたから部屋もすっきりさせようとおもってとりあえず服を大量に破棄するところから始めました。wwww クラシック聴きながら天気のいい昼下がりにのだめを読むこれにアイスティーとおやつがあれば言うことなしだけど十分幸せ(*′∀`*) 太宰府でヨドバシカメラの音楽が流れてる 6400%以上拡大して見たい時が多々あるので困る。 電車でDAZAIFUに向かいながらEmacs実践入門読んでる 隣の公園でビールと読書。でもちょっと日焼けしそう。 君も観るだろうか いちご白書を 二人だけのメモリー どこかでもう一度♪ いちご白書をもう一度 / 松任谷由美イントロがすき 冷たく〜さーれてえいーつかは〜 みーかえすうーつもりだった〜♪ DESTINY / 荒井由美
だ, だれだ!? Emacs実践入門なんて異教の本を読んでいるのは!!(もちろん冗談です)
まとめ
使い方を調べてから,モノの数分でやりたいことが実現できました. これもライブラリを作ってくれた方とRubyの言語の柔軟性によるものだと思います.
リファレンスに目を通したわけではないのですが,もう少し複雑な動作を記述したりもできるようです. 活用できる場面は多いと思うので, さらに詳しい使い方を調べて「使える道具」のひとつに加えたいですねー