« ruby で amazon WEBサービス | メイン | Capistrano で簡単にメンテナンス画面表示 »

rubyでhtmlを解析

[ruby] [ruby_library] [html]

RubyのHTMLを解析するパーサはいろいろありますが、今回は hpricot を使ってみました。

gemでインストールできるので簡単。

サンプル。

require 'rubygems'
require 'hpricot'
doc = Hpricot(%{<a class=l href="hogehoge">bar</a>baz})
doc.search("a").map {|i| [ i['href'], i.inner_html ] }
  #=> [["hogehoge", "bar"], ["foo", "baz"]]

HTMLページの読み込み


doc = Hpricot("<p>A simple <b>test</b> string.</p>")

open-uriを使えばこんな風にURL先のHTMLを取得できます。


require 'open-uri'
doc = Hpricot(open("http://www.ruby-lang.org/"))

要素の検索

class="section" な div 要素。配列を返します。

doc.search("div.section")

要素内の中身を得る

inner_html メソッドを使います。 以下の例では、最初の、class="section" な div 要素の中身を返します。

(doc.search("div.section")).first.inner_html


他にも削除書き換え等もできるようです。

参考URL

トラックバック

このエントリーのトラックバックURL:
http://i-am.web777.net/mt/mt-tb.cgi/21

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)