はじめに
Twitterの開発者アカウントを作成しAPIも無事取得できたのに、Rでツイートを集めようとしたら詰まってしまい、解決策を調べても日本語の記事があまり引っかからなかったので記事として残しておきます。
rtweetパッケージを使ってR言語でツイートデータをスクレイピングします。と、エラーの回避策です。
ツイートを集める
・APIを取得する(エラー発生と対処)
詳しい記事がたくさんあるのでそっちを見てね。Twitter APIの仕様が変わったようなので、それ以降の記事を参考にするのが良いと思われる。
APIを利用するには、英語300文字以上で利用を目的を書き審査に通らなければ…と思っていたら、待ち時間ゼロで即取得できた。
しかし、記事の下半分でする説明のようにRでこのAPIを使おうとしたら、エラーが発生した。ので、まずはその対処から。
> twitter_token <- create_token(app, consumer_key, consumer_secret) Error in twitter_init_oauth1.0(self$endpoint, self$app, permission = self$params$permission, : Unauthorized (HTTP 401).
色々調べたところ次のようにすればいいとのこと。
Twitter開発者ページ(https://developer.twitter.com/en.html)の右上のアカウント名のところから「Apps」>「Details」>「Edit」>「Callback URL1」を「http://127.0.0.1:1410」と設定する。(ところでこれって何なの??)
詳しくは下のサイトをご参照ください。(公式サイト??)
rtweet.info
・rtweetパッケージを使うための設定
まずはrtweetパッケージ
のcreate_token()
でAPIキーの設定を行う。
library(rtweet) app <- "自分のApp name" consumer_key <- "自分のAPI key" consumer_secret <- "自分のAPI secret key" create_token(app , consumer_key, consumer_secret)
# あるいはこう create_token(app = "自分のApp name", consumer_key = "自分のAPI key", consumer_secret = "自分のAPI secret key") # こうでもいい create_token("自分のApp name", "自分のAPI key", "自分のAPI secret key")
自分が分かりやすいようにご自由にどうぞ!あとtwitter_token <- create_token()
としてる場合もあったので、うまくいかなければ試してみてね。
すると
Waiting for authentication in browser... Press Esc/Ctrl + C to abort
とコンソールに表示され、ブラウザが立ち上がる。(アプリなどでよく見るやつ。App云々の設定時に記入した内容が色々表示されている)
他のアプリとの連携時と同様に、Twitterアカウントでログインして「連携アプリを認証」する。
Authentication complete.
R側のコンソールには上のように表示され、ブラウザには下のように表示される。
これで設定はOK!
・ツイート収集
# 検索ワード指定でツイートを取得 tw_data <- search_tweets("検索ワード", n = 1000, include_rts = FALSE) # アカウント指定でツイートを取得 tw_data <- get_timeline("アカウントID", n = 1000, include_rts = FALSE)
search_tweets()
では指定した語句を含むツイートを拾ってくる。この関数でもアカウントを指定してツイートを取得できるが、投稿者としてだけでなくリプ先となっているツイートも拾ってくる模様。
get_timeline()
では指定したアカウントのツイートを拾ってくる。
n =
で集めるツイート数をinclude_rts =
でリツイートを含めるか(デフォルトはTRUE)を指定できる。
取得したデータにはツイート内容だけでなく、その投稿の日時やリツイート数なども含まれている。ので、
# テキストデータのみを抽出 tw_text <- tw_data$text
として、テキストデータを抽出する。
以上!
おわりに
抽出したテキストデータをどう活用するのかはまたいずれ、、
最初はtwitteRパッケージ
を使うつもりだったのですが、似たようなエラーでうまくいかなかったのでどうすればいいのやら。パッケージの開発が終了するとか何とかということなので、このままrtweet
の方を使えばいいのだろうか。時間をかけて解決できなかった時のもやもや感といったら…。
その前にも、API取得には審査があると思っていたので、Google翻訳を駆使しつつ申請して数日間ドキドキ返信メールを待っていたのですが、何かおかしいと調べ直してみたら私は開発者アカウントとやらを作っただけで止まっており、数日ぶりに進めると特に審査もなく即発行されたとネタが尽きない右往左往っぷりでしたね。
話は変わって、先月は色々あってブログ更新が丸1か月あいてしまいました…。勉強は進まずともやりたいことは増えていくのでもどかしい日々でした。何事ももっとうまくやりたいものです。
暫く著者推定・文書分類的なことをやっていてシリーズ的に書いていた記事が現在ひと月止まっているわけですが、近頃トピックモデルの勉強を始めたり、そしてTwitter分析にも手を出してみたりとうまくできるわけがねー笑
という訳で次は一体何を書くのでしょう??分かりません。最後まで読んでいただきありがとうございます!また次もよろしくお願いします。
-
アプリ等の連携認証後に戻ってくるページのこと(ざっくり)↩