hack のためのネタ帳, etc,,,

Ruby 用の HTML パーサー

公式ページ等

基本的な使い方

DOM との対応

DOMHpricot
.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)
少なくとも 0.8.4 だと
既にノードにぶら下がっているノードを移動する場合
DOM と違いあらかじめノードから delete しておく必要があるので注意。

Node の取得

Hprecot で構築した document に除算演算子(/)を用いて CSS セレクターを渡すと
戻り値として、node の集合が得られる。

Tips

inner_text, to_plain_text における   の扱い(2011-06-29)

デフォルトだと 0xC2A0(="\302\240")として扱われる模様。 によると
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})
タグ

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

編集にはIDが必要です