Pythonでツイートを取得してみたい…
いいねやリツイートの数も調べたい…
この記事ではこんな悩みを解決することを目的です。
Pythonをつかってツイートを取得する方法について解説していきます。
私が書いたツイートを取得するコードを全文載せているので、開発環境が整っている方はコピペでOKです。
ですが、初心者の方は実際に手を動かしてコーディングしてみるのも勉強になると思うので、ぜひ手を動かして書いてみてください!
なお、ツイートを取得するだけでなく、データ分析できるようにCSV形式で保存する方法についても紹介します。
■Pythonでツイートを取得する方法
はじめに全コードを載せるのでざっと確認してみてください。コードの下に詳しい説明を書いていきます。
ちなみにこのコードをコピペし、上から4行のTwitterAPIのアクセスキーを入力することでプログラム自体は動作できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import tweepy consumer_key="" consumer_secret = "" access_key= "" access_secret = "" auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_key, access_secret) api = tweepy.API(auth) q = "検索したいキーワード" count=5 tweet_list=[] tweets = api.search(q=q, locale="ja", count=count,tweet_mode='extended') for tweet in tweets: tweet_list.append([[tweet.user.id, tweet.user.followers_count, tweet.user.friends_count, tweet.user.description], [tweet.id, tweet.full_text, tweet.favorite_count, tweet.retweet_count]]) with open("Tweetsdata.csv", "w", encoding="utf-8") as f: writer = csv.writer(f, lineterminator="\n") writer.writerow(tweet_list) |
以下ではコードの解説をしていきます。
全体の流れは以下の通りです。
1.アカウント認証をする
2.検索したいキーワードでツイートを検索する
3.抽出されたツイートを取得する
4.CSV形式で保存
1.アカウント認証をする
アカウント認証は、3~10行目で行われています。TwitterAPIで取得した4つのアクセスコードをコピペするだけです。
1 2 3 4 5 6 7 8 |
consumer_key="" consumer_secret = "" access_key= "" access_secret = "" auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_key, access_secret) api = tweepy.API(auth) |
2.検索したいキーワードでツイートを検索する
ツイートの検索は、12~17行目で行われています。はじめにq=”検索したいキーワード”でキーワードを設定。countは取得したいツイート数を指定しています。
1 |
tweets = api.search(q=q, count=count, tweet_mode='extended') |
最後に17行目のこの1文で、searchメソッドの各パラメータを定義しています。q=qは、q(searchメソッドのキーワードのパラメータ)=q(検索キーワードを代入した変数)のようになっています。
count(searchメソッドの取得ツイート数のパラメータ)=count(取得したいツイート数を代入した変数)も同様です。
このコードで最も重要なのが、tweet_mode=’extended’の部分です。
インストールしたtweepyパッケージだけでは、ツイートの全文を取得することができません。tweepyだけで動かすと、ツイートのテキストが途中で途切れてしまうということです。この不具合を回避するために、tweet_mode=’extended’を記述することで、テキストを全文取得することができます。
3.抽出されたツイートを取得する
18~19行目で、検索にヒットしたツイートをtweet_listへ代入することで、ツイートを取得しています。
1 2 3 4 5 |
for tweet in tweets: tweet_list.append([[tweet.user.id, tweet.user.followers_count, tweet.user.friends_count, tweet.user.description], [tweet.id, tweet.full_text, tweet.favorite_count, tweet.retweet_count]]) |
tweet.full_textとすることで、ツイートの全文が取得できます。なお、full_textは、tweet_mode=’extended’を記述していないと使えないので注意してくださいね。
上記のコードでは、次の項目で紹介している個人的な偏見で選んだ9つの要素を取得しています。
4. CSV形式で保存
1 2 3 |
with open("Tweetsdata.csv", "w", encoding="utf-8") as f: writer = csv.writer(f, lineterminator="\n") writer.writerow(tweet_list) |
最後の部分は、取得したツイートデータをCSVファイルに保存するところです。このコードを実行すると、動かしたPythonファイルと同じディレクトリに、「Tweetdata.csv」という名前のファイルが生成されます。
■取得したツイートデータを見てみる
取得したツイートデータについて確認してみましょう。
searchメソッドにより取得されたツイートは、Statusと呼ばれるアカウント情報からツイート自体の情報まで多くの要素を含む状態のデータとなっています。
ここでは、個人の偏見で選んだTwitter分析に利用できそうな要素だけを紹介しておきます。
なお、アクセスコードの始まりの「tweet」は上記のツイート取得コードにて使用している変数名のことです。アクセスコードを上記のコード内のfor文内にコピペすることで、欲しい情報を取得できます。
データ | 説明 | アクセスコード |
---|---|---|
id | ツイート固有のID | tweet.id |
favorite_count | いいねの数 | tweet.favorite_count |
retweet_count | リツイートの数 | tweet.retweet_count |
text | テキスト部分(140字まで) | tweet.text |
full_text | テキスト部分(200字全文) | tweet.full_text |
user.id | ツイートした人のアカウントID | tweet.user.id |
user.friends_count | ツイートした人のフォロー数 | tweet.user.friends_count |
user.followers_count | ツイートした人のフォロワー数 | tweet.user.followers_count |
user.description | ツイートした人の紹介文 | tweet.user.description |
※Twitter Developersより一部抜粋、改変
このほかにもツイートデータはいくつか取得できるので、興味のある方はTwitter Developersより確認してみてください。
■まとめ
最後に、ツイートを取得する際のポイントをまとめると以下のようになります。
・tweepyではツイートのテキスト全文を取得することはできない
・searchメソッドに引数としてtweet_mode=’extended’を与え、full_textでツイート全文を取得できる
・ツイートデータは種類が多い
また、ツイートを取得する際はAPI制限に注意してくださいね。アカウント停止になったらなんにもできなくなってしまいますので。。。
今回紹介したsearchメソッドによるツイート取得ですと、2019年5月時点では15分あたりに180リクエストが上限となっています。
1リクエストで最大100ツイート取得できるので、1時間当たりの最大取得ツイート数は(100×180)×4=72,000件となりますね。
コードが動くか確認するだけでも時間当たりのリクエストカウントは減っていきますので、十分にご注意を。
最後まで読んでいただきありがとうございました。