PythonでTwitterのAPIに接続してタイムラインを取得する方法

Twitterは公式でAPIを公開しているため、これを利用してさまざまなアプリケーションを作ることができる。
たとえば、フォローしてくれた人に対して自動的にフォローバックするBOTを作るなど、いろいろな用途で活用できる。

今回はそんな便利なTwitterのAPIへPythonからアクセスしてタイムラインを取得するというところまでやってみましょう。
これができればたいていのことはできちゃうハズですよ。

1,Twitterでアプリケーション登録する

TwitterのAPIを利用するためには、まずTwitterでアプリケーション登録というものをしなければならない。
アプリケーション登録をするとAPI用のキーを発行してくれるので、それが必要になります。

アプリケーション登録はこちらから

Create New Appをクリックします。

次に必須項目を入力して、下の方にある「Create Your Twitter Application」というボタンを押します。
これでアプリケーション登録は完了です。

2,APIキーを取得する

アプリケーション登録を済ませ、アプリ管理画面に入るとAPIキーを取得できます。
アプリ管理画面にある「Key and access Tokens」というタブをクリックするとAPIキーが表示されます。

必要なのは、この4つのAPIキーとアクセストークンです。
アクセストークンが表示されていない場合は生成しましょう。

これを後から使うのでメモ帳にでもコピペしておきます。

3,Pythonでタイムラインを読み込む

さて、次はいよいよPythonを使ってTwitterのAPIにアクセスし、そこからタイムラインを取得します。
僕は以下のようなコードを書いてみました。

connect_api.py

# -*- coding:utf-8 -*-


from requests_oauthlib import OAuth1Session



class Request_info():

    def __init__(self):
        self.url_timeline = "https://api.twitter.com/1.1/statuses/home_timeline.json"
        self.ck = "*****************************"
        self.cs = "*****************"
        self.at = "***********************************"
        self.ats = "*************************"


class Read_api(Request_info):

    def get_timeline(self):
        #タイムラインを取得
        continer = []
        twitter = OAuth1Session(self.ck, self.cs, self.at, self.ats)
        req = twitter.get(self.url_timeline, params={})
        if req.status_code == 200:
            return [True, req.status_code, req]
        else:
            status = "GET TIMELINE" + str(req.status_code)
            return [False, status, False]

このコードを実行します。
これで変数”result”にタイムラインのデータが格納されます。

C:\>python
Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 07:18:10) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import connect_api
>>> C = connect_api.Read_api()
>>> result = C.get_timeline()

4,実行結果

さきほど取得したタイムラインの情報は変数”result”に配列として格納されています。
配列の0番目と1番目には接続状態の情報が格納されるため、タイムラインの情報は2番目に入っています。

それでは、ちょっと見てみましょう。
繰り返し処理で配列に格納されている情報を抜き出せます。

ツイートの本文を取得する
for element in result[2]:
    print(element['text'])

Twitter名を取得する
for element in result[2]:
    print(element['user']['screen_name'])

ツイートのIDを取得する
for element in result[2]:
    print(element['id'])

というような感じですね。他にも沢山の情報が格納されています。
使い方次第でおもしろいアプリケーションが作れそうですね。

それでは、今回はこのあたりにしておきます。
最後まで読んでくれてありがとうございました!