はてなダイアリーの記事数を数える

学生に、はてなダイアリーに日記を出す課題を出したとき何個日記を書いたのかを数えたいことがある。その時のスクリプト

前提

  • d.hatena.ne.jp/ユーザー名/archive に日記が全部列挙されているとする
  • ユーザー名の一覧は手元にあるとする
  • Debian GNU/Linux testing + Ruby 1.8.7

環境の整備

nokogiriというスクレイピング用のライブラリーを利用する。

% sudo aptitude install libxml-ruby libnokogiri-ruby

スクリプト

ユーザー名一覧は、@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