From: "小澤和彦" Date: 2007-08-09T14:45:41+09:00 Subject: [ruby-list:43831] Re: Hpricotでコメントを取得するには 小澤です。 よしみさんありがとうございます。 なるほど、lib/hpricot/tag.rb のソースをみればいいんですね。 > doc.search("comment()").each { |elem| p elem.content } 以下の方法でもOKでした (doc/'comment()').each{|cmnt| puts cmnt} 内のコメント (doc/'head comment()').each{|cmnt| puts cmnt} IDがid1のタグ内にあるコメント (doc/'#id1 comment()').each{|cmnt| puts cmnt} こんな方法もあることが分かりました。 (doc/'*').each{|elem| puts elem if elem.comment?} 調子に乗って puts (doc/'doctype()') # error puts (doc/'!doctype') # doc 全てになってしまう DOCTYPEの場合は puts doc.at('!')  puts doc.at('<')  puts doc.at(' ')  puts doc.at('/')  でOKと思ったら の外側にあるものを出力しているだけでした。 hpricotのソースをまだ読めないのが悲しい。 これから修行を積みます。 Keiji Yoshimi wrote: > よしみです。 > > 興味があったので調べてみました。 > > 小澤和彦 さんは書きました: > >  hpricotでHTMLの操作がとても簡単にできることがわかりましたが、コメントの抜き出し方がどうしても分かりません。 > >  コメントというか、SSIの > > > > > > を処理したいのです。 > > ご存知の方よろしくお願いします。 > > > > > > lib/hpricot/tag.rbの中でHpricotの扱えるタグがいろいろと宣言されているようですが、 > この中にCommentクラスがあります。このクラスのpathnameメソッドで定義されている文字列形式が > HpricotのCSSセレクタなどを書く際に使える表現になるようです。 > # きっちりソース読んでないのであくまで推測ですが  > > これを参考に下のようにやってみると使えました。 > > gem 'hpricot' > require 'hpricot' > hdoc = Hpricot(html_with_comment) > #=> # {elem "hoge" } {comment }}> > doc.search("comment()").each { |elem| p elem.content } > " ### 大文字 " > #=> #}]> > > > >