リニューアル以後、ほぼ一ヶ月ごとの質問件数を概算しました。
もっと簡単かつ正確に算出する手順(方程式)を教えてください。
試算表 ~ 質問件数(月別)一覧 ~
20110530-20110630 3600 Renewal
20110630-20110731 2600
20110731-20110830 2800
20110830-20110930 3000
20110930-20111031 2800
20111031-20111129 2200
20111129-20111230 2200
20111230-20120131 2100
20120131-20120228 2300
20120228-20120331 2500
20120331-20120411 900 Last Question
http://q.hatena.ne.jp/1334129663#c235812
試算表 ~ 質問件数(年度別)一覧 ~
http://q.hatena.ne.jp/995116699 First Question
簡単に出来そうな例としてgoogleの検索結果を用いてみますと、
ばらつきはありますが、純増してるみたいですよ
(もう少し賢く検索してくれる人が出てくることを願ってのたたき台です)
期間 | 結果 | URL |
---|---|---|
2011/ 5/30- 2011/ 6/30 | 2090 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2011%2F5%2F30%2Ccd_max%3A2011%2F6%2F30 |
2011/ 7/ 1- 2011/ 7/31 | 3130 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2011%2F7%2F1%2Ccd_max%3A2011%2F7%2F31 |
2011/ 8/ 1- 2011/ 8/31 | 3010 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2011%2F8%2F1%2Ccd_max%3A2011%2F8%2F31 |
2011/ 9/ 1- 2011/ 9/30 | 1480 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2011%2F9%2F1%2Ccd_max%3A2011%2F9%2F30 |
2011/10/ 1- 2011/10/31 | 3480 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2011%2F10%2F1%2Ccd_max%3A2011%2F10%2F31 |
2011/11/ 1- 2011/11/30 | 3400 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2011%2F11%2F1%2Ccd_max%3A2011%2F11%2F30 |
2011/12/ 1- 2011/12/31 | 2610 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2011%2F12%2F1%2Ccd_max%3A2011%2F12%2F31 |
2011/ 1/ 1- 2011/ 1/31 | 1220 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2012%2F1%2F1%2Ccd_max%3A2012%2F1%2F31 |
2012/ 2/ 1- 2012/ 2/29 | 3060 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2012%2F2%2F1%2Ccd_max%3A2012%2F2%2F29 |
2012/ 3/ 1- 2012/ 3/31 | 2330 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2012%2F3%2F1%2Ccd_max%3A2012%2F3%2F31 |
2012/ 4/ 1- 2012/ 4/31 | 1470 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2012%2F4%2F1%2Ccd_max%3A2012%2F4%2F30 |
比較用に下記も検索してみました
リニューアル前年
期間 | 結果 | URL |
---|---|---|
2010/ 5/30- 2010/ 6/30 | 245 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2010%2F5%2F30%2Ccd_max%3A2010%2F6%2F30 |
2010/ 7/ 1- 2010/ 7/31 | 449 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2010%2F7%2F1%2Ccd_max%3A2010%2F7%2F31 |
2010/ 8/ 1- 2010/ 8/31 | 417 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2010%2F8%2F1%2Ccd_max%3A2010%2F8%2F31 |
2010/ 9/ 1- 2010/ 9/30 | 445 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2010%2F9%2F1%2Ccd_max%3A2010%2F9%2F30 |
2010/10/ 1- 2010/10/31 | 232 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2010%2F10%2F1%2Ccd_max%3A2010%2F10%2F31 |
2010/11/ 1- 2010/11/30 | 412 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2010%2F11%2F1%2Ccd_max%3A2010%2F11%2F30 |
2010/12/ 1- 2010/12/31 | 381 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2010%2F12%2F1%2Ccd_max%3A2010%2F12%2F31 |
2011/ 1/ 1- 2011/ 1/31 | 488 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2011%2F1%2F1%2Ccd_max%3A2011%2F1%2F31 |
2011/ 2/ 1- 2011/ 2/28 | 287 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2011%2F2%2F1%2Ccd_max%3A2011%2F2%2F28 |
2011/ 3/ 1- 2011/ 3/31 | 577 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2011%2F3%2F1%2Ccd_max%3A2011%2F3%2F31 |
2011/ 4/ 1- 2011/ 4/31 | 785 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2011%2F4%2F1%2Ccd_max%3A2011%2F4%2F30 |
さらに前
期間 | 結果 | URL |
---|---|---|
2009/ 5/30- 2009/ 6/30 | 451 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2009%2F5%2F30%2Ccd_max%3A2009%2F6%2F30 |
2009/ 7/ 1- 2009/ 7/31 | 1530 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2009%2F7%2F1%2Ccd_max%3A2009%2F7%2F31 |
2009/ 8/ 1- 2009/ 8/31 | 1930 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2009%2F8%2F1%2Ccd_max%3A2009%2F8%2F31 |
2009/ 9/ 1- 2009/ 9/30 | 1560 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2009%2F9%2F1%2Ccd_max%3A2009%2F9%2F30 |
2009/10/ 1- 2009/10/31 | 710 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2009%2F10%2F1%2Ccd_max%3A2009%2F10%2F31 |
2009/11/ 1- 2009/11/30 | 2020 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2009%2F11%2F1%2Ccd_max%3A2009%2F11%2F30 |
2009/12/ 1- 2009/12/31 | 2230 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2009%2F12%2F1%2Ccd_max%3A2009%2F12%2F31 |
2010/ 1/ 1- 2010/ 1/31 | 1340 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2010%2F1%2F1%2Ccd_max%3A2010%2F1%2F31 |
2010/ 2/ 1- 2010/ 2/28 | 426 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2010%2F2%2F1%2Ccd_max%3A2010%2F2%2F28 |
2010/ 3/ 1- 2010/ 3/31 | 695 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2010%2F3%2F1%2Ccd_max%3A2010%2F3%2F31 |
2010/ 4/ 1- 2010/ 4/31 | 512 | http://www.google.co.jp/search?q=allintitle:人力検索はてな+site:q.hatena.ne.jp/&tbs=cdr:1%2Ccd_min%3A2010%2F4%2F1%2Ccd_max%3A2010%2F4%2F30 |
正確さを求めるなら、プログラムでデータを抜くに勝る方法は無いと思います。
こんな感じで、データを抜いてみました(プログラムは後述します)。
質問一覧からデータを抜き出している間にも、一覧は更新されていくので、多少、手でも作業しましたが、こんな感じのデータを取得できます。
F~H列は、Excel で集計するために、計算式を入れました。
このデータを元に、月単位の質問者数を集計したのが以下になります。
年月 | ポイント有り | ポイント無し | 総質問数 |
---|---|---|---|
2010/12 | 1182 | 1182 | |
2011/01 | 1235 | 1 | 1236 |
2011/02 | 1171 | 1171 | |
2011/03 | 1287 | 1287 | |
2011/04 | 1085 | 1085 | |
2011/05 | 1096 | 242 | 1338 |
2011/06 | 960 | 1728 | 2688 |
2011/07 | 759 | 1384 | 2143 |
2011/08 | 756 | 1658 | 2414 |
2011/09 | 668 | 1749 | 2417 |
2011/10 | 646 | 1687 | 2333 |
2011/11 | 593 | 1402 | 1995 |
2011/12 | 544 | 1326 | 1870 |
2012/01 | 542 | 1153 | 1695 |
2012/02 | 586 | 1381 | 1967 |
2012/03 | 550 | 1494 | 2044 |
データの抜き出しに、とても時間がかかるので 2010年12月からのデータになってます。
日単位のデータをグラフにしたものは、別の質問の回答で書いてますので、そちらも良かったら。
http://q.hatena.ne.jp/1334129663#a1141936
最後に、データを抜き出したプログラムのソースを貼りつけておきます。
言語は Ruby です。
やっつけで作ったので、汚いですけど =)
require 'net/http' require 'uri' Net::HTTP.version_1_1 MAY_BE_CONTINUE = 100 RE_Q1 = %r|<span class="user-name"><a href="[^"]+">([^<]+)</a>| RE_Q2 = %r|<div class="question-badge"><span class="badge-point">.*class="badge-point-count">(\d+)<span>| RE_Q3 = %r|<span class="info-time">[^0-9]*([0-9/: ]+)</span>| RE_A = %r|class="user-name"><a href="/[^>]+/">([^<]+).*class="timestamp"><a href=[^>]+>([0-9/: ]+)</a>| def extract_data(download_url) msg = "loading #{download_url} ..." $stderr.print msg + "\r" response = nil begin response = http_get(download_url,10) rescue Object => err $stderr.print "\n" $stderr.print "Skip - " + err + "\n\n" return end first = true response.body.each_line { |line| userid = "" point = 0 if line =~ %r|<li class="list-question-jinriki clearfix[^"]*"><a href="/(\d+)"| then url = "http://q.hatena.ne.jp/#{$1}" q_id = $1 rrr = http_get(url,10) qqq = false rrr.body.each_line { |line2| if line2 =~ /class="questioner-title"/ then if RE_Q1 =~ line2 then userid = $1 end qqq = true end if line2 =~ /class="question-badge"/ then if RE_Q2 =~ line2 then point = $1 else point = 0 end end if qqq && line2 =~ /class="subinfo info-time-container"/ then if RE_Q3 =~ line2 then puts "Q #{q_id} #{userid} #{$1} #{point}" end qqq = false end if line2 =~ /class="answer-title"/ then if RE_A =~ line2 then puts "A #{q_id} #{$1} #{$2}" end end } end } $stderr.print ' ' * msg.length + "\r" return MAY_BE_CONTINUE end $http_clazz = Net::HTTP def http_get( uri_str, limit = 10 ) raise ArgumentError, 'http redirect too deep' if limit == 0 uri = URI.parse(uri_str) response = nil target = $http_clazz.new(uri.host, uri.port) target.read_timeout = 600 target.start { |http| if uri.query.nil? then response, = http.get(uri.path) else response, = http.get(uri.path + '?' + uri.query) end } return response end case ARGV.length when 0 N1 = 708 N2 = 1800 when 1 N1 = ARGV[0].to_i N2 = 1800 when 2 N1 = ARGV[0].to_i N2 = ARGV[1].to_i else $stderr.puts "Bad argument !" exit end (N1..N2).each { |i| url = "http://q.hatena.ne.jp/list?page=#{i}" $stderr.puts url ret = extract_data(url) i += 1 }
たしかに(抜くに勝る)方法は正確ですが、素人には暗黒箱ですね。
別記のグラフは、はてなが率先して公開すべきものですね(多謝)。
素人には暗黒箱ですね。
確かに。
別の質問のコメントでも分かりますが、この類のデータをすっと出せる方がいらっしゃるので、人力検索で聞いてみる、というのが手堅い方法なのかもしれません。
たしかに(たたき台として)着想は簡単ですが、作業は面倒ですね。
しかし、はてなが率先して公開しないので、目安になります(謝々)。