【112日目】Tweepyでツイート情報を取得_ツイートデータの収集方法
前回からの続きで、tweepyを活用した分析ツール作りにチャレンジしています。前回の記事で下準備の部分に触れたので、今回は実際にツイートのデータを収集してみたいと思います。
↓前回の記事はこちら
ツイート情報を簡単に収集する
前回までAPIキー関連の情報を取得できたので、それらを使って実際にコードを書いてみたいと思います。目的はツイート情報の取得です。
まずpipでtweepyをインストールしておきます
pip install tweepy
ツイートを取得する方法は、API連携の違いで2パターンご紹介します。
・Clientメソッド(essential accessで実行可能)
・OAuth認証(elevated accessで実行可能)
essentialとelevatedについは昨日の記事で触れたので、気になる方は冒頭のリンク先をチェックしてみてください。
Clientメソッドでツイートデータを収集する
まずはessential access(Twitter Developerにアカウント登録したのみ)で活用できる方法からです。こちらはClientメソッドを使います。
import tweepy
cunsumer_key = '取得したAPI Key'
cunsumer_secret = '取得したAPI Key Secret'
bearer_token = '取得したBearer Token'
access_token = '取得したAccess Token'
access_token_secret = '取得したAccess Token Secret'
# API連携用のコード
client = tweepy.Client(bearer_token, cunsumer_key, cunsumer_secret, access_token, access_token_secret)
# 検索条件の設定(リストで渡せば複数指定できる)
search = ['キーワードA', 'キーワードB']
tweet_max = 10
# ツイートを取得してtweetsという変数に代入
tweets = client.search_recent_tweets(query=search, max_result=tweet_max)
# ツイートデータのうちツイート内容のみを表示
for tweet in tweets:
print(tweet.text)
OAuth認証でツイートデータを収集する
OAuth認証については別途詳しく調べたいと思いますが、奥深そうなので、一先ずここでは以下の認識だけ持って先に進めます。
Clientメソッドとはコードの書き方が若干異なります。
Cursorメソッドでツイートを収集しており、この場合「ItemIterator」という型になっています。このままだと上手く操作ができないので、これを一度リストにしてから使います。
import tweepy
cunsumer_key = '取得したAPI Key'
cunsumer_secret = '取得したAPI Key Secret'
access_token = '取得したAccess Token'
access_token_secret = '取得したAccess Token Secret'
# API連携用のコード
auth = tweepy.OAuth1UserHandler(cunsumer_key, cunsumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
# 検索条件の設定(リストで渡せば複数指定できる)
search = ["キーワード1", "キーワード2"]
tweet_max = 10
# ツイートを取得してtweetsという変数に代入
tweets = tweepy.Cursor(api.search_tweets, q=search, lang="ja").items(tweet_max)
# 一度リストにしてから使う
tweets = list(tweets)
# 必要な情報のみを格納する箱(=リスト)を作る
tweet_data = []
# リストに必要な情報を入れていく
for tweet in tweets:
tweet_data.append([tweet.created_at, tweet.user.name, tweet.text, tweet.favorite_count])
# 最初に取得したツイートの内容を出力
print(tweet_data[0][2])
こんな感じで比較的簡単にデータを取得できます。
各データの名前まとめ
一部ですが、ツイートデータの名前をそれぞれ記しておきます。上記コードにある通り、「tweet.text」等と記述すれば各データを個別に取得することができます。今回は主にツイートの数や内容を分析することが目的なので、一先ず以下の情報を引っ張れれば十分かなと考えています。
# ツイートID
id
# ツイート内容
text
# ツイート時刻
created_at
# ユーザーID
user.id
# アカウント名
user.name
# いいね数
favorite_count
# リツイート数
retweet_count
# そのユーザーのフォロワー数
user.follwer_count
# そのユーザーのフォロー数
user.friends_count
ただ、ここまでの方法で取得されるデータはTwitterの中で関連度などを元にして抽出されており、全てのツイートを取得できているわけではありません。遡れる日数にも制限があります(有料プランにすれば、全てのツイートを過去に遡って取得できます)。
tweepyのソースコードでも複数のsearch関連のメソッドが確認できたので、どういうメソッドがどういうデータを取得できるのか、次回で整理してみたいと思います。
ここまでお読みいただきありがとうございました!
これまで修了したコース等
【YouTube_Django関係】
Pythonでウェブサービスを作ろう! 1
テンプレートをマスターしよう! 2
静的ファイルを配信しよう !3
本番公開しよう! 4
データベースと接続しよう! 5
ブログを作って学ぶモデル入門! 6
これが汎用ビューの力! 7
Djangoフォームを自由自在に操ろう! 8
djagoを最大限使って効率よくログインを作ろう! 9
ログイン完成!サインアップ & メール認証 10
データベースマイグレーション前編 15
データベースマイグレーション後編 16
【YouTube_Pandas関係】
3時間でマスター Pandas入門コース
Pandas20本ノック
【Paiza】
Aランクレベルアップメニュー 24/49問
データセット選択メニュー 12/17問
配列メニュー 64/64問
ループメニュー1 20/20問
ループメニュー2 12/20問
条件分岐メニュー 25/25問
二重ループメニュー 19/19問
配列活用メニュー 26/26問
文字列処理メニュー 30/30問
Bランクレベルアップメニュー 62/62問
Cランクレベルアップメニュー 30/30問
ランクB合格
ランクC合格
JavaScript体験篇 15/15講座
辞書(ディクショナリ)の基礎 8/8講座
【書籍/ブログ】
Django入門 | 初心者でも1時間でWebアプリ(Todoアプリ)を作成するコース
基礎からのMySQL
Web技術の基本
京大のPython教科書
Pythonデータベースプログラミング
Pythonエンジニアファーストブック
【Progate】
Python Ⅰ~Ⅴ
Python アプリ版 コースⅠ~Ⅴ
SQL Ⅰ~ Ⅳ
SQL アプリ版 コースⅢ
HTML&CSS 初級編
【環境構築】
Python, VSCode, MySQL(MAMP), Git / GitHub, HEROKU, anaconda, jupyter lab
この記事が気に入ったらサポートをしてみませんか?