サイトの統計情報を取得する Ruby スクリプトです。
Web Scouter
ソースコード
webscouter.rb
#!/usr/bin/ruby -Ku
require 'rubygems'
require 'scrapi'
site = URI.encode('http://diaspar.jp/')
uri = URI.parse("http://ja.webscouter.net/info.phtml?u=#{site}")
scraper = Scraper.define {
process 'span.rank', :rank => :text
result :rank
}
puts scraper.scrape(uri).gsub(%r|,|, '')
|
実行結果
$ ruby --version
ruby 1.8.5 (2006-08-25) [i386-linux]
$ chmod 744 webscouter.rb
$ ./webscouter.rb
7510
|
Feed 人気度
ソースコード
feedmeter.rb
#!/usr/bin/ruby -Ku
require 'rubygems'
require 'scrapi'
feed = URI.encode('http://feeds.feedburner.jp/DiasparJournal')
uri = URI.parse("http://feedmeter.net/detail.php?r=#{feed}")
scraper = Scraper.define {
process '.leftcontentcolumn>.leftsitetable>:nth-child(2)>:nth-child(2)', :rating => :text
result :rating
}
puts scraper.scrape(uri)
|
実行結果
$ ruby --version
ruby 1.8.5 (2006-08-25) [i386-linux]
$ chmod 744 feedmeter.rb
$ ./feedmeter.rb
1.5
|
Feed 発行部数
デベロッパーAPI では、認証を使用する方法と使用しない方法のどちらかを選択できます。
認証を使用する場合は「HTTP Parameter Authentication」もしくは「HTTP基本認証」を選択できますが、
どちらもパスワードが漏洩しやすいと考えます。
そのため、認証を使用しない方法を採用することにしました。
認証を使用しない場合は「集客支援」→「フィード・カウント」でサービスを有効に設定します。
そうすると、Feed 発行部数を取得する際に認証が不要になります。
その代わりに、Feed 発行部数の取得を誰にでも許してしまいます。
Feed を特定するために Feed ID を使用します。
Feed ID は「レポート」ページを表示してから、ブラウザの URL 欄で id(CGI パラメータ)を確認します。
ソースコード
feedburner.rb
#!/usr/bin/ruby -Ku
require 'net/http'
require 'rexml/document'
Net::HTTP.version_1_2
id = 0000
host = 'api.feedburner.jp'
path = "/awareness/1.0/GetFeedData?id=#{id}"
body = Net::HTTP.start(host, 80).get(path).body
doc = REXML::Document.new(body)
puts doc.elements['rsp/feed/entry'].attributes['circulation']
|
実行結果
$ ruby --version
ruby 1.8.5 (2006-08-25) [i386-linux]
$ chmod 744 feedburner.rb
$ ./feedburner.rb
168
|
PageRank を取得するにはチェックサム値が必要ですが、計算はそれほど簡単ではありません。
サイトのトップページのチェックサム値を取得するには、次のようにするのが手っ取り早いです。
Firefox に Google Toolbar と
Live HTTP headers
をインストールします。
次に、メニューバーから「ツール」→「Live HTTP headers」を選択します。
この状態でサイトのトップページを表示すると「http://toolbarqueries.google.co.jp/」で始まる行が表示されます。
この行の ch(CGI パラメータ)がチェックサム値です。
ソースコード
pagerank.rb
#!/usr/bin/ruby -Ku
require 'net/http'
Net::HTTP.version_1_2
page = URI.encode('http://diaspar.jp/')
ch = 'abcd12345'
host = 'toolbarqueries.google.co.jp'
path = "/search",
"?sourceid=navclient-ff",
"&features=Rank",
"&client=navclient-auto-ff",
# "&googleip=O;66.249.89.104;250",
"&ch=#{ch}",
"&q=info:#{page}"
body = Net::HTTP.start(host, 80).get(path).body
puts body.chomp.scan(%r|^Rank_.:.:(.)$|).to_s
|
実行結果
$ ruby --version
ruby 1.8.5 (2006-08-25) [i386-linux]
$ chmod 744 pagerank.rb
$ ./pagerank.rb
3
|
チェックサム値を自前で計算したいのであれば、
Google PageRank (ruby script/class)
から入手できる gprank.rb が参考になるでしょう。
このスクリプトを実行すると、次のような結果が得られます。
実行結果
$ ruby --version
ruby 1.8.5 (2006-08-25) [i386-linux]
$ chmod 744 gprank.rb
$ ./gprank.rb -u http://diaspar.jp/
PageRank: 3 : http://diaspar.jp/
$ ./gprank.rb -u http://www.yahoo.co.jp/
PageRank: 8 : http://www.yahoo.co.jp/
|
Blog Ranking
API を使用するには API Key が必要です。
API Key は、
Technorati
にログインしてから、
Technorati: API Key
にアクセスすると表示されます。
ソースコード
blogranking.rb
#!/usr/bin/ruby -Ku
require 'net/http'
require 'rexml/document'
Net::HTTP.version_1_2
site = URI.parse('http://diaspar.jp/').host
key = '0123456789abcdef0123456789abcdef'
host = 'api.technorati.com'
path = "/bloginfo?key=#{key}&url=#{site}"
body = Net::HTTP.start(host, 80).get(path).body
doc = REXML::Document.new(body)
puts doc.elements['tapi/document/result/weblog/rank'].text
|
実行結果
$ ruby --version
ruby 1.8.5 (2006-08-25) [i386-linux]
$ chmod 744 blogranking.rb
$ ./blogranking.rb
75935
|
Traffic Rank
ソースコード
trafficrank.rb
#!/usr/bin/ruby -Ku
require 'net/http'
require 'rexml/document'
Net::HTTP.version_1_2
site = URI.encode('http://diaspar.jp/')
host = 'data.alexa.com'
path = "/data/?cli=10&dat=snba&url=#{site}"
body = Net::HTTP.start(host, 80).get(path).body
doc = REXML::Document.new(body)
puts doc.elements['ALEXA/SD/POPULARITY'].attributes['TEXT']
|
実行結果
$ ruby --version
ruby 1.8.5 (2006-08-25) [i386-linux]
$ chmod 744 trafficrank.rb
$ ./trafficrank.rb
299223
|