読者です 読者をやめる 読者になる 読者になる

RにTwitterのtimelineを行列形式で取得できるようにした

R Ruby

発言はできるようになっていたので、後はtimelineの取得ですね。というわけで以下Rのコードです。どこからどう見てもRubyではなく、Rのコードです。

timeline <- function(){
  ruby <- paste("
#!/usr/bin/ruby -Ke
# -*- coding: utf-8 -*-

require %q[rubygems]
require %q[hpricot]
require %q[mechanize]
require %q[yaml]
require %q[pp]

twitter_base = %q[http://twitter.com/]

agent = WWW::Mechanize.new
agent.max_history = 1
page = agent.get(twitter_base)
config = YAML.load_file(%q[/Users/yasuhisa/twitter.yaml])
login_form = page.forms[1]

login_form[%q[username_or_email]] = config[%q[username]]
login_form[%q[password]] = config[%q[password]]
agent.submit(login_form)

source = Hpricot(agent.get_file(twitter_base))

name = []
(source/%q[td.content>strong>a]).each{ |item|
  name.push item.inner_text
}

entry = []
(source/%q[span.entry-content]).each{ |item|
  item = item.inner_text
  item = item.gsub(/\\t/,%q[])
  item = item.gsub(/\\s/,%q[])
  entry.push item
}

twitter = [name,entry].transpose
twitter.each{|item|
  puts %[#{item[0]}\t#{item[1]}]
}
",sep="")
  return(read.table(textConnection(system(paste("echo '",ruby,"'"," | ruby ",sep=""),intern=TRUE))))
}

twit <- timeline()
twit

実行するとこんな感じ。

> twit <- timeline()
> head(twit)
        V1
1 takashyx
2    hmori
3    hmori
4    hmori
5      kis
6 takashyx
                                                                                                                                               V2
1                                                                                    itunesをシャッフルで流してると高確率でジャズとメタルが交互に
2                                                                                   @alohakunそういえば風呂もはいてないや。またよろしく。おやすみ
3                                                                                                                     @alohakun40は過ぎています。
4 あ、ちょっとまずい。貢献っていっても作り上げたWEB専用OSだとか、低消費電力サーバソフトだとか。。そういう具体的な物で、教育しろってことじゃない。
5                                                                                                                           @yasu_kobayashi投機家
6                                            犯行依頼→アウト よって 犯行依頼は犯罪 よって犯行予告→アウト から 犯行依頼の予告→アウト か。

これでRやりながらでも快適なTwitter生活がすごせますね。解析に行きづまった時にどうぞ!!