本文へスキップ
からだにいいもの

Rのトピックスを中心に『まだ、まだ、知らない、役に立つ情報?』を発信します。

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

取得した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

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

スポンサーリンク
Prices and shipping availability may change. Please refer to the product page at time of purchase.
Content displayed on this site is provided by Amazon and may be updated or removed.
Amazon Associate, karada-good earns income through qualifying sales.