[ruby-list:46442] Re: Hpricot#search の使い方

From: rubikitch@...
Date: 2009-10-08 19:58:50 UTC
List: ruby-list #46442
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

In This Thread