はじめに
こんにちは。taku_76です。
前回はAPIについて記事作成し食べログAPIを使ってみましたが、他のAPIも触れてみたいと思い、
今回はTwitter APIを使ってみました。本記事ではTwitter APIの利用申請からTwitter APIを使用したデータ取得方法を紹介したいと思います。
Twitter API
Twitter APIを使用することで、ツイートの取得であったり、投稿、フォローなど行うことができます。また、自動でフォローやいいねもすることができます。
今回はPythonでTwitter APIを利用する際に使える、Tweepyを使用して主にデータの取得を例に紹介します。
Twitter API利用申請
以下からDeveloperサイトにアクセスして、「Create an app」ボタンを押下します。
次の画面でデベロッパーツールの利用目的を聞かれます。
私の場合はTwitter APIを使用したかったので、「Hobbyist > Exploring the API」を選択しました。
選択肢はいろいろありますので自分の目的に応じて選択してください。
ただ他のサイトでも確認しましたが、厳密でなくてもよいみたいです。
選択できましたら、画面下部の「Get started」ボタンを押下して次に進みます。この画面では以下について確認します。
・アカウント
・メールアドレス
・個人開発者アカウント or チーム開発者アカウント
・ニックネーム
・住んでいる国
・自身のコーディングスキルレベル5つの質問に英語で回答します。
・Twitter APIまたはTwitterデータをどのように使用しますか?
私の場合は、トレンドのツイートを取得して分析するであったり、Pythonの学習のためといった内容を英語に翻訳しました。 ・Twitterのデータを分析する予定はありますか?
YESと回答すると、データを分析する方法を説明する必要があります。
トレンドのツイートやそれに含まれているキーワードを分析して特徴を調べるといった内容を記載しました。 残り以下の質問がありますが、今回使用する予定がなかったのでNoとしました。
・アプリはツイート、リツイート、いいね、フォロー、ダイレクトメッセージ機能を使用しますか?
・Twitter以外のTwitterコンテンツに関するツイートや集計データを表示する予定はありますか?
・あなたの製品、サービス、または分析により、Twitterのコンテンツまたは派生情報を政府機関が利用できるようになりますか?
全て入力が完了したら「Next」ボタンを押下します。入力内容の確認をします。問題なければ「Next」ボタンから次に進みます。
最後に利用規約の確認を行い、「Submit Application」ボタンを押下して申請は完了です。
アプリケーション作成
Twitter APIの利用申請が完了すると、Twitterアカウントのメールアドレス宛にメールが届いていますので
「Confirm your email」ボタンを押下してデベロッパーサイトにアクセスします。
「Create project」ボタンを押下してプロジェクト作成画面に進みます。
プロジェクトの名前を入力して次に進みます。
Twitter開発者プラットフォームを使用する方法を選択します。
今回はTwitter APIを使用するので「Exploring the API」を選択しました。最後にアプリ名を入力します。
次の画面でTwitter APIキーとAPIシークレットキーが表示され、それらを使用することでTwitter APIを利用することができます。
データの取得
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(イッティ)
エンジニア中途採用サイト
ラクスでは、エンジニア・デザイナーの中途採用を積極的に行っております!
ご興味ありましたら是非ご確認をお願いします。
https://career-recruit.rakus.co.jp/career_engineer/カジュアル面談お申込みフォーム
どの職種に応募すれば良いかわからないという方は、カジュアル面談も随時行っております。
以下フォームよりお申込みください。
rakus.hubspotpagebuilder.comラクスDevelopers登録フォーム
https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/イベント情報
会社の雰囲気を知りたい方は、毎週開催しているイベントにご参加ください!
◆TECH PLAY
techplay.jp
◆connpass
rakus.connpass.com