Pythonでrequestsとrequests_oauthlibを使ってTwitterのAPIを叩く

これまで何度かPHPでAPI叩いてたんだけど、Pythonやりだしたのでそっちでやる方法調べてた。
Twitter APIのアクセストークンなんかはTwitterのDevelopersサイトでアプリ作って取得済み。

TwitterのAPI関連のライブラリはいくつかある

Twitter Developersのサイトでもpython-twitterとかTwitter APIとかtweepyとかいくつか紹介されてる。

ただ、こういった専用のもの使うよりもう少し汎用的なもの使って覚えたほうが勉強になるし使いまわせたりするんじゃないかなーと思って別の方法で試した。

requestsとrequests_oauthlibで認証のリクエストを送信する

Twitter APIへのリクエスト処理は、 requests というライブラリで行った。名前そのままだし分かりやすい。

[requests/requests: Python HTTP Requests for Humans™ ✨🍰✨ - github] (https://github.com/requests/requests)

また、Twitter APIへの認証に関しては、requests_oauthlib というライブラリで行った。

requests/requests-oauthlib: OAuthlib support for Python-Requests! - github

どっちも pip でインストールできる。

$ pip install requests requests-oauthlib

実際に使う

結構シンプルに書ける。

from requests_oauthlib import OAuth1Session, OAuth1
import requests

oauth = OAuth1(
    # ココにCONSUMER_KEY,
    # ココにCONSUMER_SECRET,
    # ココにaccess_token,
    # ココにaccess_token_secret
)

response = requests.get(
    'https://api.twitter.com/1.1/search/tweets.json?q=python',
    auth=oauth
)

requestsの .get() の後ろに .json() を付ければレスポンスをJSON形式にしてくれる。

参考

Requests の使い方 (Python Library) - Qiita

余談

レスポンスをjson形式で保存して中身を見たいなって思ったんだけど、JSON形式で整形してファイル出力してくれる方法が記事であった。

おまけ: クエリストリングを作りたい場合

辞書と urllib ライブラリの parse.urlencode() を使うと、PHPでいうところの http_build_query() みたいなのができた。

import urllib

querys = {
    'q': '-RT Linkin Park',
    'count': 100
}
querystring = urllib.parse.urlencode(querys)

まとめ

requests と requests_oauthlib の2つのライブラリでTwitter APIへのリクエストが送信できた。