学生に、はてなダイアリーに日記を出す課題を出したとき何個日記を書いたのかを数えたいことがある。その時のスクリプト。
前提
- d.hatena.ne.jp/ユーザー名/archive に日記が全部列挙されているとする
- ユーザー名の一覧は手元にあるとする
- Debian GNU/Linux testing + Ruby 1.8.7
スクリプト
ユーザー名一覧は、@userNameAryに格納されているとする。
# coding: UTF-8 require 'nokogiri' require 'open-uri' require 'kconv'; def count_num_of_clips(login) begin url = 'http://d.hatena.ne.jp/'+login+'/archive' cnt = 0 if doc = Nokogiri::HTML(open(url)) doc.xpath("//html/body/div/div[@class='day']/div[@class='body']/div[@class='section']/ul[@class='archives']/li/ul/li[@class='archive archive-section']/a[@href]").each do |link| #print "#{link.get_attribute("href")}, #{link.inner_text.toutf8}\n"; cnt = cnt + 1 end end return cnt rescue return 0 end end begin @userNameAry.each do | login| cnt = count_num_of_clips(login) print "#{login}, #{cnt}\n"; end rescue => err err.message end