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



とりあえず徳川家康がグローバルな人だとわかりました。