Ruby 用の HTML パーサー
少なくとも 0.8.4 だと
既にノードにぶら下がっているノードを移動する場合
DOM と違いあらかじめノードから delete しておく必要があるので注意。
- RubyGems.org / hpricot
-
http://code.whytheluckystiff.net/hpricot/Take me back...
- Ruby Scraping / Hpricot
- Route 477 / RubyでHTMLとWebを操作するためのライブラリ、HpricotとWWW::Mechanize
- すぐに忘れる脳みそのためのメモ
- 2008-06-13: Ruby の Hpricot でスクレイピング
- 2009-04-19: Ruby でスクレイピング (2) - Basic 認証を用いたサイトへアクセス
DOM | Hpricot |
---|---|
.appendChild(e) | .children.insert_after(e, nil) |
.insertAfter(e, p) | .children.insert_after(e, p) |
.insertBefore(e, p) | .children.insert_before(e, p) |
.removeChild(e) | .children.delete(e) |
.innerHTML | .inner_html |
.textContent | .inner_text |
document.createElement(x) | Hprecot::Elem(x, attrs = nil, children = nil, etags = nil) |
document.createTextNode(x) | Hprecot::Text(x) |
既にノードにぶら下がっているノードを移動する場合
DOM と違いあらかじめノードから delete しておく必要があるので注意。
デフォルトだと 0xC2A0(="\302\240")として扱われる模様。
Cygwin の Ruby から gem で入れた hpricot (0.8.4) だと上手く行かない。
結局以下のように書くことで目的は達成できたが、上の人は XChar いらないとか言ってるし、謎。
- きたももんががきたん。 / 2009-06-09: Hpricotのinner_textで を空白として表示する++
Hpricot::PREDEFINED_U.update({" " => 32})としておくと良いらしいのだが、
Cygwin の Ruby から gem で入れた hpricot (0.8.4) だと上手く行かない。
結局以下のように書くことで目的は達成できたが、上の人は XChar いらないとか言ってるし、謎。
require 'rubygems' require 'hpricot' require 'hpricot/xchar' Hpricot::XChar::PREDEFINED_U.update({" " => 32})
タグ
コメントをかく