Feel Physics Backyard

HoloLensの出張授業をする会社で、教材を開発しています

090720-mixiのマイミクの日記を取得するには

新しい記事があります

リンク: 090918-mixi日記をGmailで取得するスクリプトを改良してみた: Non-programmer's Ruby in Pocket.


Mechanizeを入れたので、さっそく試してみた。コードは、ほとんど以下のページのパクリです。

リンク: mecanize.rb で mixi diary を自動取得する - World Wide Walker.

mixi へ login した後に新着日記の URL 一覧をとるには、以下のようにすればいい。

require 'mechanize'
require 'kconv'
 
### ログイン
 
username = 'xxxxxx@xxxxxx.com'
password = 'xxxxxxxx'
 
agent = WWW::Mechanize.new# {|a| a.log = Logger.new('access.log') }
page = agent.get('http://mixi.jp/')
form = page.forms[0]
form.fields.find {|f| f.name == 'email'}.value = username
form.fields.find {|f| f.name == 'password'}.value = password
form.fields.find {|f| f.name == 'next_url'}.value = '/home.pl'
page = agent.submit(form, form.buttons.first)
 
if /url=([^"])"/ =~ page.body
  redirect_url = 'http://mixi.jp' + $1.to_s
  agent.get(redirect_url)
end
 
### 日記取得
 
page_home = agent.get('http://mixi.jp/home.pl')
page_home.links.each do |link|
  url = link.href
  # ホームのリンクの中からマイミク日記を参照しているものを探す
  if url =~ /view_diary\.pl.*/
    diary_page = agent.get(url)
    # まずタイトルを取得する
    diary_title = diary_page.title
    puts diary_title.tosjis
    # タイトルに「|」があればmixi日記と判断する
    if diary_title =~ /\|/
      # div id='diary_body'の中身を日記本文として表示する
      puts diary_page.at('div#diary_body').inner_text.tosjis
    end
  end
end