From: "T.Soejima" <clev / ck2.so-net.ne.jp> Subject: [ruby-list:46441] Hpricot#search の使い方 Date: Fri, 9 Oct 2009 04:29:48 +0900 るびきちです。 > Hpricot#search の使い方を教えていただけないでしょうか? > > doc = Hpricot(open("http://hoge.example.com")) > > として、ページを取得した後、ページ内に複数の <span> タグがある中で > > <span id="abc_999">huga</span> > > のhugaをidで狙い撃ちして取得するにはどのように記述するのがよいのでしょうか? > > #id ではなく、class だと span.class で取得できるのは分かったのですが・・・ #!/usr/local/bin/ruby187 # -*- coding: utf-8 -*- require 'hpricot' doc = Hpricot(DATA) # __END__以下の内容を読み込む # id="abc_999"なspanすべて doc.search("span#abc_999") # => #<Hpricot::Elements[{elem <span id="abc_999"> "huga" </span>}]> # id="abc_999"な最初のspan doc.at("span#abc_999") # => {elem <span id="abc_999"> "huga" </span>} # 内容がhugaな最初のspan doc.search("span").detect {|e| e.inner_text == 'huga' } # => {elem <span id="abc_999"> "huga" </span>} __END__ <html><body> <span id="abc_1">hoge</span> <span id="abc_999">huga</span> </body></html> # HTMLパーサはNokogiriを使うのが主流になるでしょう。Ruby 1.9にも対応していますし。 -- rubikitch Blog: http://d.hatena.ne.jp/rubikitch/ Site: http://www.rubyist.net/~rubikitch/ Twit: http://twitter.com/rubikitch/ 『Ruby逆引きハンドブック』 http://d.hatena.ne.jp/rubikitch/20090525/rubybook