2007-02-21(水) [長年日記]
■ 高速HTMLパーサー「Hpricot」を使ってみる
2000個以上ある手作りHTMLファイルの一部分を全自動で書き換える、という楽し〜いお仕事(棒読み)をもらったので、エンジンがCで書かれていて速いと評判のHpricotを使ってみることにした。
……その前に、(いい加減逃げてばかりもいられないので)とうとうRubygemsを導入したわけだが、そのへんは割愛。$HOME配下に入れてあるruby 1.8.5-p12の環境に入れようとしたのに、コマンドファイルのshebangが「#!/usr/bin/env ruby」のままだったというのが唯一のハマりポイント。
Rubygemsさえあれば、インストールは簡単:
% gem install hpricot
ライブラリの使い方はHpricot Showcase-Jaを参考にした。つっても、狙ったdiv要素を探して別の何かに置き換える、なんてコードは、この程度だ:
require 'rubygems' require 'hpricot' doc = open( ARGV.shift ){|f| Hpricot( f ) } elem = doc / 'div.foo' # この「/」メソッドがキモい elem.remove elem.before( '<!-- bar -->' ) print doc.to_html
実は、Elements#beforeやafterの挙動がおかしくて……というか親要素とのからみでおれが期待する動作にならないので……、wrapメソッドを使ってゴミ要素を挿入したのち、別途正規表現を使って変換するという美しくないコードになっちゃったけどまぁいいや。
評判どおりかなり速くて、2000個のHTMLファイルを処理するのに、数分で済んだ。年中メモリ不足であえいでいるウチのcoLinux環境にしてはかなりの速度である。ValidでないHTMLでもエラー吐いて死んだりせず、それどころか正しい要素を補ってくれたりするのは良し悪しだが、今回はOKとした。
たださん meets _why!!
_whyに会ったら「/メソッドがキモいよ!」って言いたい。けど英語で「キモい」をなんて言うのかわからない……。
キモいって言われたら,喜びそうな気がする.
>キモいって言われたら,喜びそうな気がする
確かに……。
他にも破壊的メソッドばっかりとか、キモ要素が多いなぁ、Hpricotは。Hpricotワールドに閉じれば使いやすいんだけど。
> キモい
crazy とか insane で感じが出てるんじゃないかな。
>crazy とか insane
人物に対してならいいけど、ライブラリのAPIに対してはちょっと雰囲気違くないですかねぇ。 なんつーか、こう、ムズムズする感じなんですが。
> キモい
weird がいいかも。odd だとちと固い感じかな。
まあ、「キモい」という語感はなくなるけど、単に
It does not fit me. でもいいわけで...。
crazy は人物じゃないものに対しても普通に使う気がします。
あー、意味的にはまさに「does not fit」ですねぇ。weirdもそれっぽい。
>crazy は人物じゃないものに対しても普通に使う気がします
つーか「fixしない」という意味では使わないのではないかと思うんですが、どうでしょう?
すいません。
日本語でキモイっていわれる側の人種(変態ヲタクなど)によってとは肯定的な意味にとるのかと思っていましたが違うでしょうか?古い例でいえば宅八郎などは喜んでいましたが。純粋否定であれば僕の38年間をもう一度考えな直す必要に迫られます。
「キモい」と発言する側とされる側、それぞれに肯定的・否定的立場があって、マトリックスにすると4通りの状況があるというだけの話でしょ? どれかひとつが正解なわけじゃなし。