Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb 発起人。
2006-04-09

rubyco(るびこ)の日記」のもくじを作るのはどうか

rubyco さんの日記は自分が Ruby の勉強をするのに役立つので、手動でリンク集的なものを作ろうと思い、作り出して、あっさり挫折。とりあえず各記事の名前と URL だけは機械的に抽出したほうがよさそう。ということで、下記スクリプトで読み込んでWiki にはっておいた。うは、すごくいっぱいある……。

require 'net/http'
$KCODE = 'euc'

def perse_page(path, address, port=80)
  result = []
  response = nil
  Net::HTTP.version_1_2
  Net::HTTP.start(address, port) do |http|
    response = http.request_get( path )
  end
  response.body.scan(/<h3>.+<\/h3>/).reverse.each do |line|
    if line.gsub(/<span[^>].+>.+<\/span>/, '') =~ /href="([^"]+)"[^<]+<\/a>(.+)<\/h3>/
      path = $1
      name = $2.gsub(/<[^>]+>/, '')
      result << [name, path]
    end
  end
  result
end

address = 'd.hatena.ne.jp'
id = 'rubyco'
(2006..2006).each do |year|
  (1..12).each do |month|
    path = "/#{ id }/#{ year }%02d" % month
    puts "!!#{ path }"
    perse_page(path, address).each do |name, path|
      puts "*[[#{ name }|http://#{ address }#{ path }]]"
    end
  end
end