Python requestsの使い方

requestsというライブラリは、その名の通りHTTP リクエストを投げることができるものです。
このrequestsの使い方について説明します。環境はPython 3.9.0, requests 2.25.1 です。

公式ドキュメント 👉 Requests: HTTP for Humans™


インストール方法

pipでインストールします。

pip install requests

HTTPリクエストの生成

以下のようにHTTPリクエストを作成します。

  • GET: requests.get("<URL>")
  • POST: requests.post("<URL>")
  • PUT: requests.put("<URL>")
  • DELETE: requests.delete("<URL>")
  • HEAD:requests.head("<URL>")
  • OPTIONS: requests.options("<URL>")

パタメータは上記の各メソッドにparams 引数で key, value を辞書形式で指定します。

r = requests.get(<URL>, params={'key1': 'value1', 'key2': 'value2'})


リクエストヘッダーは上記の各メソッドに headers 引数で指定します。

r = requests.get(<URL>, headers={'key1': 'value1'})

実例

import requests

r = requests.get(
    'https://xxxxxxx/yyyyyyy/zzzzzzzz', 
    headers={'Authorization': 'XXXX'}, 
    params={'id': '99999'}
)

print(r)
>> <Response [200]> 

レスポンス情報

リクエストを投げて受け取ったレスポンスの情報を見るには、レスポンスの属性を確認します。以下は、レスポンスオブジェクト(respons) の属性です。

  • respons.status_code : ステータスコード 👉 一覧
  • respons.text : レスポンス内容
  • respons.content : デコードされていないレスポンス内容
  • respons.url : アクセスしたurl
  • respons.headers : レスポンスヘッダー
import requests

r = requests.get(
    'https://xxxxxxx/yyyyyyy/zzzzzzzz', 
    headers={'Authorization': 'XXXX'}, 
    params={'id': '99999'}
)

print(r.status_code)
>> 200

print(r.text)
>> {"data":[{"created_at":"2009-04-27T03:20:52.000Z","id":"1625935798","text":"Go sox!"},{"created_at":"2009-04-27T03:18:31.000Z","id":"1625918728","text":"@katw8 Boston is happy to have you back."}],"meta":{"oldest_id":"1625918728","newest_id":"1625935798","result_count":2,"next_token":"9557owtzx4m9b4ehjiu5rz147sovwvk"}}  

print(r.headers)
>> {'cache-control': 'no-cache, no-store, max-age=0', 'content-disposition': 'attachment; filename=json.json', 'content-encoding': 'gzip', 'content-length': '792', 'content-type': 'application/json; charset=utf-8', 'date': 'Sat, 09 Jan 2021 08:10:23 GMT', 'server': 'tsa_m', 'set-cookie': 'personalization_id="v1_5ufQ5Z9GYAxkRSoq+IS5Sw=="; Max-Age=63072000; Expires=Mon, 09 Jan 2023 08:10:23 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None, guest_id=v1%3A161017982328429526; Max-Age=63072000; Expires=Mon, 09 Jan 2023 08:10:23 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None', 'strict-transport-security': 'max-age=631138519', 'x-access-level': 'read', 'x-connection-hash': 'ed894d79c1374ac774d28a23c379c2b7', 'x-content-type-options': 'nosniff', 'x-frame-options': 'SAMEORIGIN', 'x-rate-limit-limit': '1500', 'x-rate-limit-remaining': '1498', 'x-rate-limit-reset': '1610180689', 'x-response-time': '174', 'x-xss-protection': '0'}

print(r.url)
>> https://xxxxxxx/yyyyyyy/zzzzzzzz?id=99999


JSONレスポンス

レスポンスオブジェクトのjsonメソッドを使うとレスポンスデータを辞書に変換することができます。

import requests

r = requests.get(
    'https://xxxxxxx/yyyyyyy/zzzzzzzz', 
    headers={'Authorization': 'XXXX'}, 
    params={'id': '99999'}
)

r_data = r.json() # 辞書に変換
r_data['data']
>> 'aaaaaaaaabbbbbbbbbbbbbbbcccccccccccccccddddddddddddd'

関連記事

このエントリーをはてなブックマークに追加