2009-10-01 ついにインフルエンザの魔の手が!
同じ階の人がかかったらしいです。
気をつけよう、うん。
◆ [情報][メモ] 【第2回テクセミ】「pixivのインフラを支える技術」(上薗 竜太)‐ニコニコ動画(ββ)
ちょっと気になったので。
◆ [ネタ][メモ] 天才工口作家(15歳♂)ライトノベル第2巻 「R-15 こんにちは、ぼくの初恋」
気になっているので買う予定。
◆ [情報][ネタ] 「ドラクエ9」をShareでDLした人が事情聴取を受けたらしい
アップロードしていた人は逮捕な。
◆ [情報][プログラム] RubyでHTMLパーサー欲しいなぁと思ったので入れてみた
Hpricotが有名らしいのだが、作者の_why氏が消えてしまったらしいので、今後が不安。
で、何か良いの無いかなぁと思ったら、nokogiriってのがHpricot互換であるらしい。これを使うことにした。
インストールはgem install nokogiriで終わり。require 'nokogiri'で使えるようになる。
しかもNokogiri::HTML.parseに渡す文字列はutf8で無ければならないという!
どうしてくれよう、と悩んだ結果、こんな感じにしてみた(未検証
bodyにターゲットとなるhtmlが入っていると思ってください。
change_charset = {
"X-JIS" => "CP932", # SHIFT-JIS
"SHIFT_JIS" => "CP932" # SHIFT-JIS
}
if (body =~ /<meta[^>]+http\-equiv\="Content\-Type"[^>]+content\="text\/html;\s*charset=([0-9A-Za-z\-\_]+)"[^>]*>/im) then
charset = $1
else
charset = "Shift_JIS" # default code
end
charset.upcase!
if (change_charset[charset]) then
charset = change_charset[charset]
end
doc = Nokogiri::HTML.parse(body,nil,charset)
これで、
doc.search('a').each do |a_tag|
print a_tag['href']
end
とかでリンクの抽出ができるようになります。多分。
searchでxpathとか使えるっぽいし(未確認)やろうと思えばイロイロできそう。
あとはRuby Scraping - Nokogiriこの辺を読むべし(笑)
Last Update: 2009-10-01 22:48:13