rubyでクローラーを書いてみた

2ちゃんねるのスレッド(dat落ち含む)タイトルを取得する。

#!/usr/bin/ruby -KU -w

require 'net/http'
require 'kconv'

def getfile(url)
  content=''
  begin
    res = Net::HTTP.get_response(URI.parse(url))
    if res.code == '200'
      content=res.body.toutf8
    end
  rescue
  end 
  content
end

def scanhref(url,re)
  getfile(url).scan(re)
end

scanhref(
  'http://menu.2ch.net/bbstable.html',
  /<A HREF=(http\S+).*?>(.+?)<\/A>/
).each do |url, title|

  scanhref(
    url+'subback.html',
    /<a href=\"(\S+)\".*?>\d+\:(.+?)<\/a>/
  ).each { |u,t|
    print "#{u}<>#{t}\n"
  }

  scanhref(
    url+'kako/',
    /<A HREF=\"(\S+)\">subject.txt<\/A><\/TD>/
  ).each { |u|
    print getfile(url+'kako/'+u[0])  
  }
end