LoginSignup
8
27

More than 3 years have passed since last update.

R rtweetでツイートを取得 (twitter スクレイピング)

Last updated at Posted at 2018-04-17

概要

Rを使用してツイートを取得し、ツイート内にある特定の単語の出現回数をカウントしました。

今回行ったこと

「#グルメ」が入っているツイートを取得し、"ラーメン", "パン", "うどん" のどれが出現回数が多いかを調べました(表記ゆれ対応はなし)

準備

まずは、Twitter Application Management (https://apps.twitter.com/) にログインし、
使用するappを選択。
「Keys and Access Tokens」のタブから
・Consumer Key (API Key)
・Consumer Secret (API Secret)
があるか確認してください。
こちらを使って、ツイートを取得していきます。

ツイートの取得


# ライブラリの読み込み
library(rtweet)
library(devtools)

# tokenの設定
twitter_token <- create_token(app = "XXXX", # 自分で設定したappの名前
                              consumer_key = "YYYY", #Consumer Keyを入力
                              consumer_secret = "ZZZZ") #Consumer Secretを入力


# search_tweets("検索したいワード", n=取得したい件数, include_rts=リツイートを取得するかどうか)
rt <- search_tweets("#グルメ", n = 1000, include_rts = FALSE)

# ツイート部分の抽出
target_text <- rt$text

ツイート内の特定の単語の出現回数を集計

"ラーメン", "パン", "うどん"の出現回数を集計する


library(foreach)
library(dplyr)
library(RMeCab)

# 特定の単語の抽出
tweet <- foreach(i=1:nrow(rt), .combine="rbind")%do%{
  target_text <- rt$text[i] #i番目のツイート内容を抽出
  word <- unlist(RMeCabC(target_text)) #単語ごとに分解
  target_word <- word[names(word)=="名詞"] %>% #名詞のみ抽出
    as.data.frame() 
  colnames(target_word) <- "word"
  target_word <- target_word %>%  
    filter(word %in% c("ラーメン", "パン", "うどん")) %>% #特定の単語のみ抽出
    mutate(id=i) #ツイート番号を付与
  return(target_word)
}

# 1ツイート中のある1単語の発言の上限を1回に揃えて集計
tweet %>% 
  unique() %>% 
  group_by(word) %>% 
  summarise(cnt = n()) %>% 
  arrange(desc(cnt))

結果

ラーメンが多かったです。
ラーメン美味しいよね

# A tibble: 3 x 2
  word       cnt
  <fct>    <int>
1 ラーメン    41
2 パン        11
3 うどん       6

その他

rtweetライブラリでは、ユーザ情報やお気に入りの情報など取得できます


# ユーザ情報(ユーザid,自己紹介文など)の取得
users <- users_data(rt)

# usersの6番目の人のfavoを取得してみる
get_favorites(users$user_id[6], n = 30, since_id = NULL, max_id = NULL,
               parse = TRUE, token = NULL)

8
27
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
27