2008年10月17日金曜日

Rubyのhpricotを使ってページのタイトルと説明を取得してみる

Rubyのhpricotを使ってページのtitleとmetaのdescriptionをスクレイピングするメモ。

require 'hpricot'
require 'open-uri'
require 'kconv'
require "resolv-replace"
require 'timeout'

begin
doc = timeout(10){ Hpricot( open(url).read ) }
rescue URI::InvalidURIError
rescue OpenURI::HTTPError
rescue SocketError
rescue Errno::ENOENT
rescue RuntimeError
rescue TimeoutError
#各種エラー
end

title = doc.search('title').first.innerText.strip.toutf8
desc_elm = doc.search('meta[@name=description]').first
desc = desc_elm ? desc_elm.get_attribute('content').strip.toutf8 : ""

open-uriはタイムアウトの時間を設定するすることができないので別途処理。


参考サイト:
RubyのHpricotも便利さでは負けていないの巻 (CodeZine)
RubyでHTMLとWebを操作するためのライブラリ、HpricotとWWW::Mechanize
open-uriにtimeoutを設定する方法

0 件のコメント: