RubyのHpricotでニコニコ動画をスクレイピングしてみる(3)

|

この前作ったライブラリにクラスを追加して、
ニコニコ動画の「注目のタグ」一覧も毎日取ってみています。
上位は全然変わらないみたいだけどね。

これです→http://www.nicovideo.jp/tag
もうちょっと人にやさしく配置してくれるとうれしいのですが・・・
スクレイパー的にはありがたいんだけどw

Rubyスクリプトは下記になります。
nico.rbがライブラリで、tag.rbがクライアントプログラムです。


 # nico.rb
 require 'net/https'
 require 'kconv'
 require 'rubygems'
 require 'hpricot'
 
 module Nico
   class Tags
     def read (sid)
       @tags = []
       
       Net::HTTP.start("www.nicovideo.jp", 80) do |http|
         response = http.get(
           "/tag",
           "Cookie" => "user_session=user_session#{sid}")
         
         doc = Hpricot(response.body.tosjis)
         
         doc.search("a/nobr").each do |e|
           @tags << e.inner_text
         end
       end # start
     end # def
     
     def save (fname)
       File.open(fname, "w") do |file|
         @tags.each {|e| file.puts e }
       end # open
     end # def
   end
   
   def self.get_sid (mail, password)
     sid = nil
     https = Net::HTTP.new("secure.nicovideo.jp", 443)
     https.use_ssl = true
     https.start do |w|
       data = "next_url=&mail=#{mail}&password=#{password}"
       response = w.post("/secure/login?site=niconico", data, "Content-Length" => "#{data.length}")
       sid = $1 if response["Set-Cookie"] =~ /user_session=user_session([0-9_]+)/
     end
     sid
   end
 
 end # module

 #! ruby -Ks
 # tag.rb
 
 # ライブラリロード
 require 'date'
 require 'nico'
 
 today = Date.today.strftime("%Y%m%d")
 sid = Nico::get_sid(メールアドレス, パスワード)
 
 t = Nico::Tags.new
 t.read sid
 t.save "tag_#{today}.csv"


ちなみに9/2~9/18で比較して上位10位までは変化なしでした。

1. ゲーム
2. アニメ
3. 音楽
4. エンターテイメント
5. MAD
6. 歌ってみた
7. プレイ動画
8. スポーツ
9. アイドルマスター
10. その他

ところで何順で並んでいるんだろう?
タグ新規登録数なのか、新規投稿動画のタグなのか、
マイリストやコメントや再生に紐付いてるタグなのか、
総数なのか、差分なのか、気になります。

このブログ記事について

このページは、yuchが2007年9月17日 23:30に書いたブログ記事です。

ひとつ前のブログ記事は「学歴論争」です。

次のブログ記事は「夢をかなえるゾウ」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.01