Python Twitter API V2 でツイートを取得する 基本②
準備
Twitter APIを使用するためにはTwitterアカウントと開発者アカウントの登録が必要です。 から登録申請を行います。
code:test
import requests
import pandas as pd
import emoji
import re
# 発行したBearer tokenを指定する
bearer_token = 'xxx'
# Twitter APIのURL
# 検索クエリ
query_params = {'query': 'toeic -is:retweet', 'tweet.fields': 'author_id', 'max_results': 100}
def create_headers(bearer_token):
headers = {"Authorization": "Bearer {}".format(bearer_token)}
return headers
def connect_to_endpoint(url, headers, params):
has_next = True
c = 0
result = []
while has_next:
response = requests.request("GET", search_url, headers=headers, params=params)
if response.status_code != 200:
raise Exception(response.status_code, response.text)
response_body = response.json()
print('Rate limit remaining: ' + rate_limit)
c = c + 1
has_next = ('next_token' in response_body'meta'.keys() and c < 300) # next_tokenがある場合は検索クエリに追加
if has_next:
return result
# Pandasのデータフレームを使ってデータを加工
def create_data_frame(json_data):
df = pd.DataFrame(json_data)
# ツイート中のURLを削除
# ツイート中の絵文字を削除
df'text' = df'text'.apply(lambda x: ''.join(c for c in x if c not in emoji.UNICODE_EMOJI)) return df
# データフレーム中のツイートデータをCSVファイルへ出力、 indexは出力しない
def write_csv(data_frame):
data_frame'text'.to_csv('toeic.csv', index = False) headers = create_headers(bearer_token)
json_response = connect_to_endpoint(search_url, headers, query_params)
data_frame = create_data_frame(json_response)
write_csv(data_frame)
1リクエストでは最大100件まで取得できます。検索結果が100件より多い場合はレスポンス中にnext_tokenというキー名でトークンが返されます。次の100件の結果を取得するためにはリクエストパラメータにnext_tokenを追加する必要があります。