RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのITエンジニアによる技術ブログです。

Twitter APIの利用申請からデータ取得までやってみた

f:id:tech-rakus:20210910113556p:plain

はじめに

こんにちは。taku_76です。
前回はAPIについて記事作成し食べログAPIを使ってみましたが、他のAPIも触れてみたいと思い、
今回はTwitter APIを使ってみました。本記事ではTwitter APIの利用申請からTwitter APIを使用したデータ取得方法を紹介したいと思います。

Twitter API

Twitter APIを使用することで、ツイートの取得であったり、投稿、フォローなど行うことができます。また、自動でフォローやいいねもすることができます。
今回はPythonTwitter APIを利用する際に使える、Tweepyを使用して主にデータの取得を例に紹介します。

Twitter API利用申請

  1. 以下からDeveloperサイトにアクセスして、「Create an app」ボタンを押下します。
    f:id:taku_76:20210908062358p:plain

  2. 次の画面でデベロッパーツールの利用目的を聞かれます。
    私の場合はTwitter APIを使用したかったので、「Hobbyist > Exploring the API」を選択しました。
    選択肢はいろいろありますので自分の目的に応じて選択してください。
    ただ他のサイトでも確認しましたが、厳密でなくてもよいみたいです。
    選択できましたら、画面下部の「Get started」ボタンを押下して次に進みます。 f:id:taku_76:20210908062926p:plain

  3. この画面では以下について確認します。
    ・アカウント
    ・メールアドレス
    ・個人開発者アカウント or チーム開発者アカウント
    ・ニックネーム
    ・住んでいる国
    ・自身のコーディングスキルレベル f:id:taku_76:20210908064350p:plain f:id:taku_76:20210908064626p:plain

  4. 5つの質問に英語で回答します。
    Twitter APIまたはTwitterデータをどのように使用しますか?
    私の場合は、トレンドのツイートを取得して分析するであったり、Pythonの学習のためといった内容を英語に翻訳しました。 f:id:taku_76:20210908065941p:plainTwitterのデータを分析する予定はありますか?
    YESと回答すると、データを分析する方法を説明する必要があります。
    トレンドのツイートやそれに含まれているキーワードを分析して特徴を調べるといった内容を記載しました。 f:id:taku_76:20210908070417p:plain 残り以下の質問がありますが、今回使用する予定がなかったのでNoとしました。
    ・アプリはツイート、リツイート、いいね、フォロー、ダイレクトメッセージ機能を使用しますか?
    Twitter以外のTwitterコンテンツに関するツイートや集計データを表示する予定はありますか?
    ・あなたの製品、サービス、または分析により、Twitterのコンテンツまたは派生情報を政府機関が利用できるようになりますか?
    全て入力が完了したら「Next」ボタンを押下します。

  5. 入力内容の確認をします。問題なければ「Next」ボタンから次に進みます。
    f:id:taku_76:20210908071518p:plain

  6. 最後に利用規約の確認を行い、「Submit Application」ボタンを押下して申請は完了です。 f:id:taku_76:20210908071817p:plain

アプリケーション作成

  1. Twitter APIの利用申請が完了すると、Twitterアカウントのメールアドレス宛にメールが届いていますので
    「Confirm your email」ボタンを押下してデベロッパーサイトにアクセスします。
    f:id:taku_76:20210909050109p:plain

  2. 「Create project」ボタンを押下してプロジェクト作成画面に進みます。 f:id:taku_76:20210909050339p:plain

  3. プロジェクトの名前を入力して次に進みます。 f:id:taku_76:20210909050637p:plain

  4. Twitter開発者プラットフォームを使用する方法を選択します。
    今回はTwitter APIを使用するので「Exploring the API」を選択しました。 f:id:taku_76:20210909074318p:plain

  5. プロジェクトについて説明します。
    Twitter API利用申請時の目的と同じような内容で良いと思います。 f:id:taku_76:20210909075306p:plain

  6. 最後にアプリ名を入力します。
    次の画面でTwitter APIキーとAPIシークレットキーが表示され、それらを使用することでTwitter APIを利用することができます。 f:id:taku_76:20210909075850p:plain

データの取得

Twitter APIではアカウントをフォローしたり、ツイートを投稿したり様々な機能を利用できますが、今回はデータの取得に絞って例を紹介します。
Twitter APIを使用するためのコードですが、まずはTweepyを利用するために以下の設定を行います。

import tweepy
 
# 取得したキーを格納
CK = "APIキー"
CS = "APIシークレットキー"
AT = "アクセストークン"
AS = "アクセストークンシークレットキー"
 
# Tweepy設定
auth = tweepy.OAuthHandler(CK, CS) # Twitter API認証
auth.set_access_token(AT, AS) # アクセストークン設定
api = tweepy.API(auth) # オブジェクト設定

これで設定が完了しましたので、実際にTwitter APIを使用していきます。

タイムラインのツイートを取得

タイムラインの取得には以下の3つのメソッドがあります。
API.home_timeline:自分自身のタイムライン
API.user_timeline:指定したユーザのタイムライン
API.mentions_timeline:自分へのリプライのタイムライン

API.home_timelineメソッドの引数としては以下があります。
・since_id:指定したIDより最近のツイートが取得される(IDは最近のものほど大きくなる)
・max_id:指定したIDよりも古いツイートが取得される
・count:取得件数指定
・page:取得する結果のページを指定

API.home_timelineを使用した例が以下となります。

#タイムライン取得
result = api.home_timeline(count=1)

for tweet in result:
    print('='*80)
    print('ツイートID : ', tweet.id)
    print('ツイート時間 : ', tweet.created_at)
    print('ツイート本文 : ', tweet.text)
    print('ユーザ名 : ', tweet.user.name) 
    print('スクリーンネーム : ', tweet.user.screen_name) 
    print('フォロー数 : ', tweet.user.friends_count) 
    print('フォロワー数 : ', tweet.user.followers_count) 
    print('概要 : ', tweet.user.description) 
    print('='*80)

ツイートIDを指定して検索

API.get_statusメソッドを使用することでツイートIDからツイートの情報を取得できます。
以下が例となっています。(TWEETIDを検索したいツイートIDに指定してください)

#ツイートIDを指定
TWEETID = 'xxxxxxxxxxxxxxxxx'

#ツイートの取得
tweet = api.get_status(TWEETID)

#JSON形式に変換
result = tweet._json

#表示
print('作成日 : ', result["created_at"])
print('スクリーンネーム : ', result['user']['screen_name'])
print('ツイートテキスト : ', result['text'])

キーワード検索

検索を行うにはAPI.searchメソッドを使用します。引数は以下のようになっています。
・q:検索するキーワード
・geocode:ツイートした場所
・lang;言語指定
・locale:クエリの言語指定
・result_type:取得ツイートの種類指定
・count:取得件数指定
・until:ツイート時期の指定
・since_id:指定したIDより最近のツイートが取得される
・max_id:指定したIDよりも古いツイートが取得される
・include_entities:entitiesの有無

以下が例となります。
tweet_mode = 'extended'とありますが、これを指定することで140字を超えた場合でもツイートの本文全て取得できます。

tweets = api.search(q = "Twitter API", include_entities = True, tweet_mode = 'extended', lang = 'ja', count = 1)

for tweet in tweets:
    print('='*80)
    print('ツイートID : ', tweet.id)
    print('ユーザ名 : ', tweet.user.screen_name)
    print('日時 : ', tweet.created_at)
    print(tweet.full_text)
    print('いいね数 : ', tweet.favorite_count)
    print('リツイート数 : ', tweet.retweet_count)
    print('='*80)

地域のトレンド取得

地域のトレンドを取得するには、API.trends_placeメソッドを使用します。引数としてはwoeidと呼ばれるidを指定します。
これはYahooから提供されているIDを指します。
以下が例となっています。検索結果を少なくするためにwoeidを日本だけにしています。

woeid = {
    "日本":   23424856
}
 
for area, wid in woeid.items():

    print("--" + area + "--")

    trends = api.trends_place(wid)[0]

    for i, content in enumerate(trends["trends"]):
        print(i+1, content['name'])

出力結果は以下になります。

--日本--
1 #佐久間宣行ANN0
2 #乃木坂46ANN
3 #CRWIN
4 #寝ローンズ
5 打順と守備位置
6 #SMAP30YEARS
7 香山リカ
8 津田大介
9 署名運動
10 愛知県知事
11 PS5pro
12 えむちゃん
13 中京テレビNEWS
14 記述削除
15 中京テレビNEWS
16 アナスタシア
17 膳場貴子アナ戦闘態勢
18 相田さん
19 レジライリリィ
20 インターバル
21 高市早苗氏笑顔
22 HO診断
23 痛烈質問
24 コルデー
25 他人のそら似
26 従軍慰安婦
27 テイルズ
28 まいちゅん
29 両刃の剣
30 閣議決定
31 沖田オルタ
32 中村悠一
33 アクシア
34 なぎこさん
35 オツカレサマデシタ
36 レザーくん
37 通信障害
38 ちゃん誕生日
39 まじんさん
40 万里くん
41 世界大会
42 書類送検
43 守護のため
44 教科書会社5社
45 久保ちゃん
46 最新研究
47 スペースおつこれ
48 カイニス
49 沖田さん
50 記述削除

まとめ

いかがだったでしょうか。今回はTwitter APIの利用申請からデータ取得までを紹介させていただきました。
Twitter APIの利用申請は入力事項が多く苦労しましたが、以前は審査が厳しくもっと苦労することがあったみたいです。
Twitter APIについてまだ簡単な部分しか触れられていないため、他の使い方も試していこうかと思います。

参考

Twitter APIで遊んでみた ~1. 各種キーの申請と取得~ | SIOS Tech. Lab

APIリファレンス — tweepy 3.6.0 ドキュメント

2021年度版 Twitter API利用申請の例文からAPIキーの取得まで詳しく解説 | 新宿のホームページ制作会社 ITTI(イッティ)


  • エンジニア中途採用サイト
    ラクスでは、エンジニア・デザイナーの中途採用を積極的に行っております!
    ご興味ありましたら是非ご確認をお願いします。
    20210916153018
    https://career-recruit.rakus.co.jp/career_engineer/

  • カジュアル面談お申込みフォーム
    どの職種に応募すれば良いかわからないという方は、カジュアル面談も随時行っております。
    以下フォームよりお申込みください。
    forms.gle

  • イベント情報
    会社の雰囲気を知りたい方は、毎週開催しているイベントにご参加ください! rakus.connpass.com

Copyright © RAKUS Co., Ltd. All rights reserved.