Rで解析:Twitterのデータを取得するコマンド例


投稿日: Rの解析に役に立つ記事 ,

取得したTwitterのOAuthを利用して、自分のタイムラインやキーワードの検索結果を取得する実行コマンドを紹介します。DTパッケージを利用していますのでユーザーやつぶやきも簡単に確認することができます。

TwitterのOAuth取得は下記の記事を確認してください
・Rで解析:TwitterのOAuthを取得するコマンド例
 https://www.karada-good.net/analyticsr/r-331/

実行コマンドはR version 3.2.2で確認しています。


実行コマンド

詳細はコメント、コマンドのヘルプを確認してください。日本語の検索キーワードはエラーが出ます。解決策をご存知の方、教えて下さい。

#作成したTwitterOAuthオブジェクトの読み込み
library("tcltk")
load(paste(as.character(tkgetOpenFile(title = "TwitterOAuthオブジェクトを選択",
                                      filetypes = '{"TwitterOAuthオブジェクト" {"*.Oauth"}}',
                                      initialfile = "TwitterOAuth.Oauth")), sep = "", collapse =""))

#httrライブラリの読み込み
library("httr")

#自分のタイムラインを取得
#取得数を設定
GetCount <- 50
req <- GET(paste0("https://api.twitter.com/1.1/statuses/home_timeline.json?count=", GetCount), 
           config(token = MyOauth)) 
data <- content(req)

#データを整形
#リンクURLの取得
LinkURL <- NULL
for(i in seq(data)){

  getURL <- data[[i]]$entities$urls
  
  if(length(getURL) == 0){
    
    LinkURL <- c(LinkURL, "-")
    
  }else{
  
    LinkURL <- c(LinkURL, getURL[[1]]$expanded_url)
  
    }
}

#ツイート内容の取得
TweetText <- sapply(data, "[[", "text")
#リツイート数の取得
ReTweetCount <- sapply(data, "[[", "retweet_count")
#いいね数の取得
FavoriteCount <- sapply(data, "[[", "favorite_count")
#データをデータフレーム化
GetMyTweetInfo <- data.frame(LinkURL, TweetText, ReTweetCount, FavoriteCount)

#データをDTパッケージでHTMLに出力
library("DT")
#ツイート内容にハイパーリンクを付与
GetMyTweetInfo[, 2] <- paste0('<a href=', GetMyTweetInfo[, 1], ' target="_blank">', GetMyTweetInfo[, 2], '</a>')
#1列めを削除
GetMyTweetInfo <- GetMyTweetInfo[, -1]
#テーブルの作成
datatable(GetMyTweetInfo, rownames = FALSE, escape = FALSE, extensions = 'TableTools',
          filter = 'top', options = list(pageLength = 15, autoWidth = TRUE))


###twitterを検索#####
#検索項目を指定
query <- "karada-good.net"
#取得数を設定
GetCount <- 50
req <- GET(paste0("https://api.twitter.com/1.1/search/tweets.json?q=", query, "&count=", GetCount), 
           config(token = MyOauth)) 
TimeData <- content(req)

#リンクURLの取得
LinkURL <- NULL
for(i in seq(TimeData$statuses)){
  
  getURL <- TimeData$statuses[[i]]$entities$urls[[1]]$expanded_url
  
  if(length(getURL) == 0){
    
    LinkURL <- c(LinkURL, "-")
    
  }else{
    
    LinkURL <- c(LinkURL, getURL)
    
  }
}

#ユーザーネームの取得
UserName <- NULL
for(i in seq(TimeData$statuses)){
  
  UserName <- c(UserName, TimeData$statuses[[i]]$user$name)
  
}

#スクリーンネームの取得
ScreenName <- NULL
for(i in seq(TimeData$statuses)){
  
  ScreenName <- c(ScreenName, TimeData$statuses[[i]]$user$screen_name)

}

#ツイート内容の取得
TweetText <- NULL
for(i in seq(TimeData$statuses)){

  TweetText <- c(TweetText, TimeData$statuses[[i]]$text)
    
}

#リツイート数の取得
ReTweetCount <- NULL
for(i in seq(TimeData$statuses)){
  
  ReTweetCount <- c(ReTweetCount, TimeData$statuses[[i]]$retweet_count)
  
}

#いいね数の取得
FavoriteCount <- NULL
for(i in seq(TimeData$statuses)){
  
  FavoriteCount <- c(FavoriteCount, TimeData$statuses[[i]]$favorite_count)
  
}

#データをデータフレーム化
GetMyTimeLine <- data.frame(LinkURL, ScreenName, UserName, TweetText, ReTweetCount, FavoriteCount)

#データをDTパッケージでHTMLに出力
library("DT")
#ツイート内容にハイパーリンクを付与
GetMyTimeLine[, 4] <- paste0('<a href=', GetMyTimeLine[, 1], ' target="_blank">', GetMyTimeLine[, 4], '</a>')
#スクリーンネームからユーザーページのハイパーリンクを作成
GetMyTimeLine[, 3] <- paste0('<a href=https://twitter.com/', GetMyTimeLine[, 2], ' target="_blank">', GetMyTimeLine[, 3], '</a>')
#1,2列めを削除
GetMyTimeLine <- GetMyTimeLine[, c(-1, -2)]
#テーブルの作成
datatable(GetMyTimeLine, rownames = FALSE, escape = FALSE, extensions = 'TableTools',
          filter = 'top', options = list(pageLength = 15, autoWidth = TRUE))

出力結果

・自分のタイムラインを取得
見にくい場合はこちら
https://www.karada-good.net/wp/wp-content/uploads/2015/11/GetMyTweetInfo.html

・karada-good.netの検索結果
見にくい場合はこちら
https://www.karada-good.net/wp/wp-content/uploads/2015/11/GetMyTimeLine.html


少しでも、あなたのウェブや実験の解析が楽になりますように!!

スポンサードリンク

おすすめコンテンツ


スポンサードリンク