# はてなブックマークの人気エントリで紹介されているURLを過去に渡って全て収集し、 # その情報をファイルに出力するためのプログラム # # 将来はRSSフィード対応にしたいな。 require 'net/http' require 'uri' require 'kconv' class HatenaHotEntry attr_accessor :blog_title, :blog_body, :blog_url def initialize() @blog_title = nil @blog_body = nil @blog_url = nil end def get_page() uri = URI.parse(@blog_url) Net::HTTP.version_1_2 Net::HTTP.start(uri.host, uri.port) do |http| response = http.get(uri.request_uri) @blog_body = Kconv.tosjis(response.body) end end end class HatenaBookmarkReader def initialize() @entry_array = nil @page_text = nil end def get_page(site_url) uri = URI.parse(site_url) Net::HTTP.version_1_2 Net::HTTP.start(uri.host, uri.port) do |http| response = http.get(uri.request_uri) @page_text = Kconv.tosjis(response.body) end parse_page() end def parse_page @entry_array = Array.new() flag = false @page_text.each_line do |line| flag = true if line == "
\n" if flag if line =~ /^(.+?)<\/a>/ entry = HatenaHotEntry.new() entry.blog_url = $1 entry.blog_title = $2 @entry_array.push entry flag = false end end end end def title @entry_array.each do |element| print "#{element.blog_title}\n\n" end end def to_csv print "未実装" end end hatena = HatenaBookmarkReader.new hatena.get_page('http://b.hatena.ne.jp/hotentry') hatena.title #hatena.to_csv