【Python】Twitter API v2を使って遊んでみる【ツイート取得編】

前回はTwitter APIの利用開始方法について解説しました!

あわせて読みたい
【2022年最新版】「Twitter API v2」の利用開始方法 最近Twitterをよく利用するが分析が好きな自分はもっと手軽にTwitterを分析できないかと思い、「Twitter API」という存在を知り利用登録をしてみたので、初心者ながらに...

以前に比べて容易に申請〜利用ができるようになったみたいです!

今回は取得したAPI等を利用してTwitterをいじってみたいと思います!笑

目次

Twitter APIを利用する方法

アクセスキーとトークンの取得

前回、Twitter developersにサインアップした際に作ったアプリがあるのでそのアプリのAPI Keyを使っていきます!

もし忘れてしまった方は下記の方法で再度作り直してどこかに保存しておきましょう!

※アクセスキーやトークンを忘れた方

上記の手順で「Regenetate」を押すと下記の表示が出ます。

「Regenerateすると今まで使っていたコードが使えなくなるので、アップデートする必要があります」という表示なので、問題なければRegenerateします!

実行すると新しくAPI KeyとSecret Keyが表示されますので、コピーしてメモ等に写しておきましょう!

ツイートを取得してみる

ここからはAPIを使って実際にツイートを取得してみようと思います!

コード全文

import requests
import pandas as pd
import emoji
import re

# 発行したBearer token
bearer_token = 'ここは自分で取得したトークンを入力'

# Twitter APIのURL
search_url = "https://api.twitter.com/2/tweets/search/recent"

# 検索クエリ
params = {'query': 'from:Yuxas_beginner', 'tweet.fields': 'author_id', 'max_results': 100, 'user.fields'  : 'id'}

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()
        result += response_body['data']

        rate_limit = response.headers['x-rate-limit-remaining']
        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:
            query_params['next_token'] = response_body['meta']['next_token']

    return result

# Pandasのデータフレームを使ってデータを加工
def create_data_frame(json_data):
    df = pd.DataFrame(json_data)

    # ツイート中のURLを削除
    df['text'] = df['text'].apply(lambda x: re.sub(r'https?://[\w/:%#$&\?\(\)~\.=\+\-]+', '', x))
     # ツイート中の絵文字を削除
    df['text'] = df['text'].apply(lambda x: ''.join(c for c in x if c not in emoji.UNICODE_EMOJI))
    return df


headers = create_headers(bearer_token)
json_response = connect_to_endpoint(search_url, headers, query_params)

data_frame = create_data_frame(json_response)

初心者ながらにこちらのサイト(https://sebenkyo.com/2021/06/28/post-2060/)を参考に作ってみました!

「Bearer token」を入力する部分だけ自分で取得したものを使えばコピペで使えると思います!

検索条件はこちらを参考に変えてみてください!

Developer Platform:Search Tweets

実行結果

こちらが今回作ったコードを利用して取得したツイートです!

相方のユクサスのツイートを取得してみました!笑

まとめ

Twitter developer登録からツイートの取得まで比較的スムーズにできました!

サインアップのみでAPIが使えることになったので、プログラミングを使ってTwitterの操作が容易になったと思います!

次回以降もTwitter APIを使って遊んでみようと思います!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次
閉じる