サイトアイコン 【TechGrowUp】

Python開発入門31 PythonのRequestsライブラリを使ったHTTPリクエスト

はじめに

WebサービスやAPIと連携する際、PythonでのHTTPリクエスト処理は欠かせません。その中で最も使いやすいライブラリがRequestsです。

Requestsは、PythonでHTTPリクエストを簡単に送信し、レスポンスを処理するためのライブラリです。この記事では、Requestsの基本的な使い方、便利な機能、トラブルシューティングについてわかりやすく解説します。

Requestsライブラリとは

概要

Requestsは、Python標準ライブラリのurllibの代替として設計されたシンプルで直感的なHTTPリクエストライブラリです。複雑なコードを書くことなく、HTTPリクエストの送信、レスポンスの処理が可能です。

Requestsライブラリの主な特徴

  1. シンプルな構文
    短いコードで直感的に操作可能。
  2. 豊富なHTTPメソッドのサポート
    GET、POST、PUT、DELETE、HEADなどのリクエストを簡単に送信。
  3. セッション管理
    Cookieや認証情報の管理が可能。
  4. 強力なエラーハンドリング
    ステータスコードの確認や例外処理が簡単。

Requestsのインストール

RequestsはPyPIで提供されており、以下のコマンドでインストールできます:

pip install requests

インストールの確認:
インストール後、以下のコマンドでバージョンを確認できます:

pip show requests

出力例:

Name: requests
Version: 2.28.1
Summary: Python HTTP for Humans.

基本的な使い方

GETリクエスト

GETリクエストは、サーバーからデータを取得するために使用します。

import requests

response = requests.get("https://jsonplaceholder.typicode.com/posts/1")
print(response.status_code)  # ステータスコード
print(response.json())       # レスポンスのJSONデータ

説明:

POSTリクエスト

POSTリクエストは、サーバーにデータを送信するために使用します。

import requests

data = {"title": "foo", "body": "bar", "userId": 1}
response = requests.post("https://jsonplaceholder.typicode.com/posts", json=data)
print(response.status_code)  # ステータスコード
print(response.json())       # サーバーからのレスポンス

説明:

ヘッダーの追加

カスタムヘッダーを追加する場合、以下のように設定します:

headers = {"Authorization": "Bearer YOUR_ACCESS_TOKEN"}
response = requests.get("https://api.example.com/data", headers=headers)
print(response.text)

説明:

タイムアウトの設定

リクエストにタイムアウトを設定することで、長時間待機を回避できます:

response = requests.get("https://api.example.com/data", timeout=5)

説明:

応用的な使い方

セッション管理

複数のリクエストでCookieやヘッダーを共有する場合、セッションを使用します。

with requests.Session() as session:
    session.headers.update({"Authorization": "Bearer YOUR_ACCESS_TOKEN"})
    response = session.get("https://api.example.com/data")
    print(response.text)

説明:

ファイルのアップロード

ファイルをサーバーにアップロードする場合:

files = {"file": open("example.txt", "rb")}
response = requests.post("https://api.example.com/upload", files=files)
print(response.status_code)

説明:

プロキシの利用

プロキシを通じてリクエストを送信する場合:

proxies = {"http": "http://proxy.example.com:8080"}
response = requests.get("https://api.example.com/data", proxies=proxies)

説明:

エラーハンドリング

ステータスコードの確認

ステータスコードを手動で確認することでエラー処理が可能です:

response = requests.get("https://api.example.com/data")
if response.status_code == 200:
    print("Success!")
else:
    print(f"Error: {response.status_code}")

例外処理

リクエスト中に発生する例外を処理するには:

try:
    response = requests.get("https://api.example.com/data", timeout=5)
    response.raise_for_status()
except requests.exceptions.RequestException as e:
    print(f"An error occurred: {e}")

説明:

Requestsを使う際の注意点

  1. 認証情報の管理
    APIキーやトークンを含むリクエストを送信する際、機密情報が外部に漏れないように注意しましょう。
  2. 適切なタイムアウト設定
    タイムアウトを設定することで、リクエストの待機時間を制限できます。
  3. レスポンスの検証
    サーバーからのレスポンスデータを適切に検証することで、エラーや不正データを回避できます。

まとめ

Requestsライブラリは、PythonでのHTTPリクエストを簡単かつ効率的に操作するための非常に強力なツールです。この記事で紹介した基本操作や応用例を活用して、Web APIや外部サービスとの連携をスムーズに行いましょう!

モバイルバージョンを終了