HTML取得&解析をするRubyスクリプト

簡単!たった13行のコードで HTML取得&解析をするPerlスクリプト
簡単!たった2行のコードで HTML取得&解析をするrubyスクリプト

なんか流行ってる?
ぼくもYahoo!Japanのトピックス一覧を取得するやつをRubyでやってみました。
使用ライブラリは標準添付のopen-uri と gemでインストールしたnokogiri
無理やり行数を削るとこんな感じか?・・・読み辛い。

test.rb

#!/usr/bin/env ruby
%w(open-uri rubygems nokogiri).each{|lib| require lib }
puts Nokogiri::HTML( open('http://www.yahoo.co.jp', 'User-Agent' => 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)').read ).css('#topicsfb li').map{|elm| elm.content}

実行結果

$ date
2010年  6月  7日 月曜日 23:57:15 JST

$ ruby test.rb
農水相に山田副大臣昇格へ写真NEW
口蹄疫 運搬車が感染経路か
北 最高人民会議で首相が交代写真
飲料市場 水からゼロ炭酸へ写真
果皮からポリフェノール生産
楽天「内野5人」もサヨナラ負け写真
キンコン西野 本売れたら解散写真
うの別居報道 事務所離婚否定写真
今日の話題(61件)
一覧


上のtest.rbは可読性があんまりなんで、もう少し読みやすく書くとこんな感じ。

#!/usr/bin/env ruby
# -*- coding:utf8 -*-
require 'open-uri'
require 'rubygems'
require 'nokogiri'

# urlを指定する
url = 'http://www.yahoo.co.jp'
# IE8のフリをする
user_agent = 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)'

doc = Nokogiri::HTML( open(url, 'User-Agent' => user_agent).read )
puts doc.css('#topicsfb li').map do |elm|
  elm.content
end