Home > Ruby > Rubyでmixiの日記をバックアップする

Rubyでmixiの日記をバックアップする

  • 2010-05-05 (水) 18:50
  • Ruby

mixiを退会すると日記は消えてしまいます。その日記を手っ取り早く手元に残しておきたいとき、1つずつ手作業でやっていると大変です。ここではそれを自動化します。

準備

まず普通にWebブラウザでmixiにログインして日記を見ます。FirefoxだとFirebugが便利です。

FirebugでDOMツリーを見ていくと該当の部分が青く反転するので、必要な場所を絞り込んでいきます。最後に、右クリックをして「XPathをコピー」を選んでやると、XPathを入手できます。

xpathを入手したら、これを利用して解析していきます。ただし、Firefoxではtbodyタグを勝手に挟むため、これを除去します。

コード

#!/usr/local/bin/ruby -Ku
require 'rubygems'
require 'mechanize'
require 'nokogiri'
require 'kconv'

# 簡易待ち付きget
def get(url)
	sleep(10)
	$agent.get(url);
	$agent.page.encoding = "UTF-8"
end

#変数
owner_id = mixiのID
diary_url = "http://mixi.jp/list_diary.pl?id=#{owner_id}"

# mixiのトップページにアクセス
$agent = Mechanize.new
$agent.get("http://mixi.jp/")
$agent.page.encoding = "UTF-8"

# ログイン
$agent.page.form_with(:name => "login_form" ) do |f|
	f.field_with(:name => 'email').value = "めーるあどれす"
	f.field_with(:name => 'password').value = "ぱすわーど"
	f.click_button
end

puts "ログインしました"

# 日記トップを取得
get(diary_url)
parser = Nokogiri::HTML.parse($agent.page.body, nil)
diary = parser.xpath("/html/body/div/div[2]/div/div[3]/div[2]/div[2]").to_html.toutf8
diaries = diary.scan(/
  • .*?\"(.*?)\".*?\"(.*?)\".*?li>/) diaries.each do |d| each_diary = "http://mixi.jp/#{d[0]}" puts "#{d[1]}を処理" Dir::mkdir(d[1]) Dir::chdir(d[1]) get(each_diary) parser = Nokogiri::HTML.parse($agent.page.body, nil) diary_list = parser.xpath('//*[@id="bodyMainAreaMain"]').to_html.toutf8 entrirs = diary_list.scan(/
    .*?\"(view_diary.*?)\">(.*?)" f.puts "" f.puts '' f.puts "" f.puts "" f.puts contents f.puts "" f.puts "" f.close end Dir::chdir("../") end
  • Comments:0

    Comment Form
    Remember personal info

    Trackback+Pingback:0

    TrackBack URL for this entry
    http://blog.neoneet.jp/2010/05/05/ruby%e3%81%a7mixi%e3%81%ae%e6%97%a5%e8%a8%98%e3%82%92%e3%83%90%e3%83%83%e3%82%af%e3%82%a2%e3%83%83%e3%83%97%e3%81%99%e3%82%8b/trackback/
    Listed below are links to weblogs that reference
    Rubyでmixiの日記をバックアップする from 週刊(月刊?)プレカリアート

    Home > Ruby > Rubyでmixiの日記をバックアップする

    Search
    Feeds
    Meta

    Page Top