見出し画像

【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認証については別途詳しく調べたいと思いますが、奥深そうなので、一先ずここでは以下の認識だけ持って先に進めます。

1.従来のID・パスワードベースとは異なるトークンベースの認証
2.トークンには限られた権限だけを与えられているので、万が一トークンが盗まれても被害が少ない
3.認可コードフローなどによりトークンを安全に取得
4.トークンには有効期限が設定されており、万が一トークンを盗まれても有効期限過ぎると使えないので、セキュア

https://tech-lab.sios.jp/archives/25470

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

この記事が気に入ったらサポートをしてみませんか?