PythonでTwitter APIを使わずにTweetを取得する

データ分析をしたり、コーパスを作成する際に、Tweetを取得することはよくあると思います。しかし、Twitterの公式APIは制限がやたら厳しく、使いやすいとは言えません。今回紹介する Twitter ScraperTwitterの公式APIを使わずにTweetを取得することができるPythonライブラリです。APIの制限がなく、非常に高速に動作するのが特徴です。

ちなみに、Twitter Scraper の作者は requests を作った Kenneth Reitz です。

github.com

インストール

まずは、pipenvを使ってtwitter-scraperをインストールします。 このとき、仮想環境のPythonバージョンは3.6以上にしておいてください。 なぜなら、twitter-scraperの中ではPython 3.6から追加されたfstringを使っているからです。 そのため、Python 3.6 未満の環境だと、パッケージをインポートした際に例外が発生してしまいます。

$ pipenv install twitter-scraper
Installing twitter-scraper...
Adding twitter-scraper to Pipfile's [packages]...
Pipfile.lock not found, creating...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Updated Pipfile.lock (776465)!
Installing dependencies from Pipfile.lock (776465)...
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 19/19 — 00:00:05

使い方

インストールが完了したら、Pythonインタプリタを起動します。 インタプリタを起動したら、get_tweets関数をインポートします。 get_tweets関数にユーザ名を指定することで、Tweetを取得することができます。

>>> from twitter_scraper import get_tweets
>>> 
>>> for tweet in get_tweets('kennethreitz', pages=1):
>>>     print(tweet['text'])
P.S. your API is a user interface
OPINIONS
...

pagesパラメータを指定することで過去のTweetにさかのぼって取得することができます。 「これで指定したユーザのTweetをすべて取得できる!」と思いきや、数百件取得するとそれ以上は取れなくなります。 とはいえ、Twitter APIの制限を気にせず使えるので、有効活用していきましょう。