Ruby-ノコギリで簡単Webアクセス
Rubyはネットワークアクセスも簡単なので,Webクローラー・ロボットの類は何度も何度も作ってますが...
ライブラリのNet/HTTPやURIクラスが強力なので,つい自分で正規表現でHTMLをパースしちゃうんですよね.
でも,リンクアドレスを取得しようと思って
/<a href="(\w+)>"/
なんて正規表現を書くのは複雑な上,w3c規格にきっちり従うのは困難です.
なので,ちゃんとライブラリを使おうと思うと,例えばノコギリ.
http://wiki.github.com/tenderlove/nokogiri
ノコギリのインストールはこんな感じです.
RubyGemsをインストール.
http://docs.rubygems.org/
# wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz # tar xvf rubygems-1.3.5.tgz # cd rubygems-1.3.5 # ruby setup.rb
Nokogiriをインストール.
# rehash # gem18 install nokogiri
そしてプログラムはこんな感じです.
例えば,Yahoo!Japanで「catfood」で検索をすると,今現在,トップに「Catfood Inc」が来るようです.この検索結果を自動化しようとすると,テキストブラウザでは単にLIタグの中にあるA HREFタグが検索結果のようなので,
# coding: UTF-8 $LOAD_PATH.push("/usr/local/lib/ruby/gems/1.8/gems/nokogiri-1.3.3/lib"); require 'nokogiri' require 'open-uri' require 'kconv'; doc = Nokogiri::HTML(open('http://search.yahoo.co.jp/search?p=catfood')) doc.css('li a').each do |link| print "#{link.content.toutf8()}\n"; end
↑これでYahoo!の検索結果と同じ結果が得られました.
凄く簡単です.
> ruby test.rb キャットフード通販オンラインショップ -Catfood Inc ... Cat Food Official HP **EAT CATFOOD** mike.catfood.jp saitou155・プログラム技術のページ 購入履歴*20061104 | 黒猫にごはん。 購入履歴*20061108 | 黒猫にごはん。 『中学受験・息子はホンマに出来るのか!?』 | 読書というもの Vector:CATFOOD (Windows3.1 / 画像&サウンド ... ロリポップホームページ