Ruby 初心者スレッド Part 24at TECH
Ruby 初心者スレッド Part 24 - 暇つぶし2ch218:デフォルトの名無しさん
09/01/08 07:03:39
そんなとこでメソッド分けるなよめんどいからさ

p でいろいろ表示してみるとわかるが、Hpricot の構造は

 ・ parse でパースした最初のHTML … Hpricot::Doc
 ・ 条件などで抽出されたタグ単体 … Hpricot::Elem
 ・ 条件で抽出された複数のタグ … Hpricot::Elememts

になってる。で、search や at は Hpricot::Elem にも Hpricot::Elememts にも定義されてるから、
search や at をし続ける限りにおいて、メソッドチェーンは途切れない。

ということで、「chk_aaa の返り値を Hpricot::Elememts のままにしておく」が正解。
Hpricot のオブジェクトを文字列にするのは検索や抽出操作が完全に終わった最後の最後に行う。
それまでは「○○タグを表すオブジェクト(が複数詰まった配列互換の何か)」として扱うのが楽。

class Blog
def chk_aaa(doc)
return doc.search("div.AAA")
end
def pick_BBB(doc)
return doc.search('div.BBB')
end
end

doc = Hpricot(open("URLリンク(example.com)").read)
aaa =Blog.new.chk_aaa(site)
puts "aaaの最初は #{aaa[0].inner_html} だよー" # ← たとえば画面表示時に文字列にする
bbb = aaa.pick_BBB(aaa)



次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch