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へのリクエストが送信できた。