【TwitterAPI】’search/tweets’を繰り返して100件以上のツイートを取得する【Laravel】

スポンサーリンク

TwitterAPIの’search/tweets’でツイートを取得することができますが、1回のリクエストで取得できる上限が100件のため、それ以上のツイートを取得するには工夫する必要があります。

1000件取得しようとしても100件しか取得されません。

‘search/tweets’を繰り返すことで100件以上のツイートを取得するようにします。サンプルは最後にあるGitHubから取得できます。

前回からの続きです。

search/tweetsに「max_id」を指定する

やり方は色々あると思いますが、ここでは「100件取得したら次のリクエストでは最初に取得した100件以降から100件取得」というのを繰り返して、取得したツイートが100件未満だったらループを抜けるというようにします。

‘search/tweets’で途中からツイートを取得するには、「max_id」を指定します。こちらを参考にさせていただきました。

100件取得したらその中の最後のツイートのidを「max_id」に指定してツイートを取得するようにします。

検索した件数がわかりやすいように画面にループのindexを表示するようにします。

100件以上のツイートが取得できました。

それでも上限がある

TwitteraAPIは、15分間でリクエスト可能な回数が制限されています。’search/tweets’の場合は「180回/15分」のため1回のリクエストで100件ツイートを取得したとして15分間で18,000件が上限となります。

15分間経てばまた18,000件取得できるので、実現したい機能次第では問題ないかもしれませんが、利用の際は注意する必要があります。

使用状況については、’application/rate_limit_status’で確認することができます。’search/tweets’の前後でrate_limit_statusを確認してみます。

以下のとおりにリクエストの回数分、残回数が減っています。

  • ‘search/tweets’の前のremaining:180
  • ‘search/tweets’で取得した件数:1078件(11回のリクエスト)
  • ‘search/tweets’の後のremaining:169(180 – 11)

ただし、’application/rate_limit_status’も’search/tweets’と同じく「180回/15分」の制限があるので、制限を確認し過ぎると今度は’application/rate_limit_status’の方でエラーになってしまいます。

なので、確認が終わったら’search/tweets’前後の確認用(dumpの2箇所)は、削除かコメントアウトしておいてください。

これで制限がリセットされた状態で検索すれば、最高で約18,000件のツイートが取得できます。

サンプル

GitHub:naoto-mitsuya / search_tweet_over100

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です