本ページには PR が含まれます。
PythonでTwitterアカウントのツイート情報を取得したい…
今回はPythonを使って特定のTwitterアカウントのツイート情報を取得する方法をご紹介します。
サンプルコードを見ながらサクサク処理を試せます。ぜひ参考にしてみてください。
なお、Twitter APIの利用には事前に利用登録が必要です。
登録がまだの方は以下の記事でわかりやすく解説しているので参考にしてみてください!!
ライブラリのインストール
Twitter APIのアクセスにはOAuth認証を使用します。
OAuth認証をカンタンに実装できる「requests_oauthlib」ライブラリをインストールしましょう。
コマンドプロンプト(Windows)もしくはターミナル(macOS)で以下を実行します。
pip install requests_oauthlib
コンソールに「Successfully installed 〜〜〜」と表示されていればインストールは成功です。
OAuth認証でアカウントにアクセス
OAuth認証とは
OAuthは、ユーザアカウントのアクセストークンを使ってTwitter(サービス)へのアクセス権限をアプリに与え、 APIのスムーズな利用を可能にする認証規格です。
Twitter APIをより安全に利用するため、ユーザはアクセストークンを利用してTwitterサーバーと情報のやりとりを行います。
OAuth認証の実装 (サンプルコード)
インストールしたrequests_oauthlibライブラリを使ってPython自分のTwitterアカウント権限を通してみましょう。
# ライブラリのインポート
from requests_oauthlib import OAuth1Session
# キーの設定
API_KEY = "あなたのAPI Key"
API_KEY_SECRET = "あなたのAPI Key Secret"
ACCESS_TOKEN = "あなたのAccess Token"
ACCESS_TOKEN_SECRET = "あなたのAccess Token Secret"
# OAuth認証を通して「twitter_oauth」という変数に格納
twitter_oauth = OAuth1Session(API_KEY, API_KEY_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
特定アカウントのツイート取得
使用するAPIリソースURL
api_resource = "https://api.twitter.com/1.1/statuses/user_timeline.json"
APIリクエストに関する情報
レスポンスのフォーマット | jsonフォーマット |
認証が必要か | 必要 |
リクエスト上限回数/15分 | 1500 |
リクエスト上限回数/24時間 | 100000 |
APIリクエストには上限回数があります。
短時間に大量のリクエストを送信するとサーバーに負荷がかかってしまうため、なるべく間隔を空けましょう
さっそくTwitterアカウントのツイートを取得してましょう。
サンプルコード
import json
from requests_oauthlib import OAuth1Session
# キーの設定
API_KEY = "あなたのAPI Key"
API_KEY_SECRET = "あなたのAPI Key Secret"
ACCESS_TOKEN = "あなたのAccess Token"
ACCESS_TOKEN_SECRET = "あなたのAccess Token Secret"
# OAuth認証
twitter = OAuth1Session(API_KEY, API_KEY_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
# APIリソースURL
api_resource = "https://api.twitter.com/1.1/statuses/user_timeline.json"
# 取得するデータの設定
params = {
"screen_name": "junpei_style",
"count": 150,
"exclude_replies": "true",
"include_rts": "false"
}
res = twitter.get(api_resource, params=params)
response = json.loads(res.text)
print(response)
変数params
で取得したいデータを設定しています。
指定できる主なパラメータ
パラメータ | 指定する値の例 | 意味 |
---|---|---|
screen_name | “junpei_style” などの文字列 | ツイートを取得するアカウント |
user_id | 1336480837815037952などのint型 | 同上。 |
count | 150 などのint型 | 取得するツイートの上限数 (最大200) |
exclude_replies | “true”, “false”のどちらか | リプライツイートを排除するか |
include_rts | “true”, “false”のどちらか | リツイートを含めるか |
実行結果(一部抜粋)
# 実行結果
[{'created_at': 'Fri Aug 26 10:58:10 +0000 2022',
'id': 1563118601238085632,
'id_str': '1563118601238085632',...
# 以下数百行と続く
ですが、レスポンスそのままではデータが見づらいですね…。
出力データを見やすくする
ツイート情報を取得できましたが、jsonフォーマットのままだとわかりづらいですよね。
pandasのDataFrameにまとめて、csv出力していきましょう。
# pandasをインポート
import pandas as pd
import json
from requests_oauthlib import OAuth1Session
API_KEY = "あなたのAPI Key"
API_KEY_SECRET = "あなたのAPI Key Secret"
ACCESS_TOKEN = "あなたのAccess Token"
ACCESS_TOKEN_SECRET = "あなたのAccess Token Secret"
twitter = OAuth1Session(API_KEY, API_KEY_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api_resource = "https://api.twitter.com/1.1/statuses/user_timeline.json"
params = {
"screen_name": "junpei_style",
"count": 150,
"exclude_replies": "true",
"include_rts": "false"
}
res = twitter.get(api_resource, params=params)
response = json.loads(res.text)
# pandasのDataFrameにまとめる
df = pandas.DataFrame(response)
# DataFrameをcsvに書き出す
df.to_csv("user_tweet_datas.csv", encoding="utf-8-sig")
jupyter notebookで出力確認すると以下のようになります。
出力結果
データフレームの主要な列の意味
列名 | 意味 |
---|---|
created_at | ツイート日時 |
id | ツイートid |
id_str | ツイートidの文字列型 |
text | ツイートの本文 |
truncated | ツイート本文が省略されているか |
entities | ハッシュタグやユーザメンション情報 |
source | ツイートのリンクURL |
retweet_count | リツイートされた数 |
favorite_count | いいねされた数 |
これらのデータがあれば、著名なTwitterアカウントのツイートを分析することもできますね。
まとめ
今回はTwitter APIを使って特定アカウントのツイート取得を紹介しました。
Twitter分析にも活用できるので、ぜひ参考にしてみてください。
Twitter API活用方法も紹介しているので、合わせてどうぞ