暇なのでmixiニュースのアクセスランキング取得スクリプトを書いてみた
ボク自身はmixiを再開する気は全くないのですが、世間では依然として最大手のSNSサイトとして重宝されているようで、mixiに参加しているユーザの動向には非常に興味を持っています。
その中でも「mixiニュースのアクセスランキング」は、mixiユーザが普段どのようなニュースに興味を持っているかを把握する為の有益なネタのひとつであると考えており、ぜひとも収集しておきたい情報だと思っていたのですが、
ニュースを見るだけの為に普段使いもしないサービスにログインするのも非常にアホらしい
というジレンマを抱えておりました。
というわけで、
mixiニュースの総合アクセスランキング1〜20位を自動取得するスクリプト
をついカッとなって書いてみました。
ランキングページでは記事のリンクしか取得出来ないのですが、それだと中身を読むのに結局ログインが必要になってしまいます。
そのため、ついでに個別記事の文面も取得してしまっております。これでmixiいらず!
$ gem install mechanize
でMechanizeをインストールした上で、以下のスクリプトを実行します。
require 'rubygems' require 'mechanize' class MixiCrawler EMAIL = "xxxxxxxx" PASSWORD = "yyyyyyyy" def ranking agent = Mechanize.new # ログイン画面 agent.get("https://mixi.jp") agent.page.form_with(:name => "login_form") do |form| form.field_with(:name => "email").value = EMAIL form.field_with(:name => "password").value = PASSWORD form.click_button end # ホーム画面を表示後、ニュースランキング画面へ agent.get("http://mixi.jp/home.pl") agent.get("http://news.mixi.jp/show_ranking.pl?type=access") ranking = [] (1..20).each do |i| news_title = agent.page.at("tr.rank#{i} td.newsTitle a").text news_link = agent.page.at("tr.rank#{i} td.newsTitle a")["href"] ranking << {:count => i, :title => news_title, :link => news_link} end # 個別のニュース記事画面 ranking.each do |rank| agent.get("http://news.mixi.jp/#{rank[:link]}") rank[:article] = agent.page.at("div.article").inner_html end ranking end end # puts MixiCrawler.new.ranking
あとは煮るなり焼くなりご自由にどうぞ。