第15章 Twitterデータ
PCを使ってオンラインの情報を取得することをクローリング、そこから必要な情報を得ることをスクレイピングと呼びます(きっと)。 しかし、大抵の場合は両者は一緒に行われるので、断りがない限り合わせてスクレイピングと呼ぶこととします。
API (Application Programming Interface) とはプログラミングによってアプリケーションを利用するための機能です。 いまいちよく分かりませんが、今回はTwitterのスクレイピングを例にAPIの使い方を紹介します。 とは言ってもRで直接APIを叩くのは大変なので、Rのパッケージを使いたいと思います。
##
## Attaching package: 'rtweet'
## The following object is masked from 'package:purrr':
##
## flatten
15.1 事前準備
15.1.1 Twitterアカウントの作成
Twitterアカウントが必要なので作成します。
15.1.2 認証
実は、これまではAPIを使うためのアカウント認証がめんどくさかったのですがrtweet
だと自動でやってくれるらしいです。
具体的には最初にrtweet
の関数を使うと認証を求められるので、許可するだけです。
- こちらを参照。
15.2 単語によるツイートの取得
serch_tweet()
で単語で検索してツイートをスクレイピングしてくれます。
今回は新型コロナ
で100件取得してみます。
- 一回につき最大で18000件まで取得できるそうです。
- 不適切なツイートがあったらすいません。
いろいろありますがtext
変数にツイートがあることがわかります。
15.3 ユーザーによるツイートの取得
get_timelines()
では特定のユーザーのタイムラインを取得することができます。
例えば、ドナルド・トランプの公式アカウント@realDonaldTrump
のツイートを取得するにはこのようにします。
15.4 言語によるツイートの取得
ツイ廃の間では周知の事実だとは思いますが、ツイッターの検索クエリは(例えばこのような)オプションを付けることでより細かい指定をすることができます。 例えば、日本語のツイートのみを取得する場合は次のようにします。
15.5 地域によるツイートの取得
特定の地域でつぶやかれたツイートのみを取得することもできます。
そのためには東京の地理情報を得るためにGoogle MapsのAPIに登録する必要があります。 まずは、Google Maps Platformに行き、登録します。 クレジットカード情報を入力しますが、一年間は無料で使え、期限後に自動請求されることは無いはずです。
登録を完了するとGoogle Cloud PlatformのAPIとサービス
内の認証情報
にAPI key
が表示されているので、それをコピペして例えばapikey
のようなオブジェクトにします。
例えば、京都でつぶやかれたツイートのみを取得する場合は次のようにします。
tweets <- search_tweets("", geocode = lookup_coords("kyoto, jp", apikey = apikey), n = 100)
tweets %>%
select(text)
15.6 ライブストリームの取得
今からつぶやかれる全てのツイートからランダムサンプリングする場合はstream_tweets()
を使います。
デフォルトでは30秒間のツイートを取得します。
## Streaming tweets for 5 seconds...
## Finished streaming tweets!
15.6.1 地域のライブストリームの取得
しかし、全世界のツイートを欲しいという状況は少ないと思います。 例えば、東京でつぶやかれるツイートのみを取得したいとします。
## Streaming tweets for 5 seconds...
## Finished streaming tweets!
- 他にもキーワードやユーザーIDでも取得することができます(その場合はGoogle MapsのAPIキーは必要ありません)。
- ツイート時間
created_at
はグリニッジ標準時で記録されているので、日本時間にするには9時間だけ足す必要があります。
15.7 その他の情報の取得
get_friends()
:特定のユーザーがフォローしているユーザーを取得する。get_followers()
:特定のユーザーをフォローしているユーザーを取得する。get_favarites()
:特定のユーザーのいいねを取得する。