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