HTMLが欲しい
Hpricotなる優れもの
最近Wikipediaをこそつくことが趣味になってるのだが、
そんな僕にとって強い味方になるものを発見した。
Hpricot
こいつはすごい使いやすい。
Rubyのライブラリで
$ sudo gem install hpricot
ってやるだけでインストールできる。
後で面倒なことになりそうだけどシカトー!
getLinkFrom徳川家康
さっそくなので、Hpricotを使ってWikipediaの『徳川家康』からリンクを取り出すプログラムを書いてみた。
require 'rubygems' require 'hpricot' require 'open-uri' require 'uri' $KCODE = 'EUC' ####################################### # 対象ページのURLを生成する。 ####################################### def generateURL url = "http://ja.wikipedia.org/wiki/徳川家康" return url end ####################################### # 指定されたURLからそのページを読み込む ####################################### def getDoc(url) doc = Hpricot(open(URI.escape(url.chomp!))) return doc end ####################################### # 与えられたHTMLからリンクを取り出す ####################################### def getLink(doc) a_tags = doc.search('a') a_tags.each do |item| link = item.attributes['href'] puts link end end url = generateURL doc = getDoc(url) getLink(doc)
長いように見えてプログラムそのものは多分25行程度。
気合い入れれば多分というか絶対10行以内で書けるはず。
とにかく見ればすぐにわかるシンプル設計。
まあ、Rubyらしいのかは僕には判断がつかないが。。。
ちなみに実行すると↓みたいな感じになる。
$ ruby test.rb nil #column-one #searchInput /wiki/Wikipedia:%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88_%E6%AD%A6%E5%A3%AB/%E5%87%A1%E4%BE%8B /wiki/%E7%94%BB%E5%83%8F:Tokugawa_Ieyasu.jpg /wiki/%E6%88%A6%E5%9B%BD%E6%99%82%E4%BB%A3_%28%E6%97%A5%E6%9C%AC%29
こんなのが延々と続いて泣きたくなります。
最後の方になると多言語へのリンクとかがあって面白い。
http://war.wikipedia.org/wiki/Tokugawa_Ieyasuって何語なんだろうか?ww
とりあえず徳川家康がグローバルな人だとわかりました。