ウェブ上のデータを取得するためにPythonを使用する場合、便利なライブラリの一つがRequestsです。
Requestsは、HTTPリクエストを簡単に行うためのPythonライブラリで、ウェブスクレイピングやAPIとの通信に広く使用されています。
Requestsのインストール
まず、Requestsライブラリをインストールします。以下のコマンドを実行してください。
pip install requests
Requestsの基本的な使い方
1. GETリクエスト
GETリクエストは、最も基本的なHTTPリクエストの一つです。
指定したURLからデータを取得するために使用されます。
import requests
# URLの指定
url = 'https://api.example.com/posts/1'
# GETリクエストの送信
response = requests.get(url)
# ステータスコードの確認
print(f"ステータスコード: {response.status_code}")
# レスポンス内容の表示
print(f"レスポンス内容: {response.json()}")
2. パラメータ付きのGETリクエスト
クエリパラメータを付けてリクエストを送ることもできます。
例えば、検索クエリを含むリクエストを送信する場合です。
# URLの指定
url = 'https://api.example.com/posts'
# パラメータの指定
params = {'userId': 1}
# GETリクエストの送信
response = requests.get(url, params=params)
# ステータスコードの確認
print(f"ステータスコード: {response.status_code}")
# レスポンス内容の表示
print(f"レスポンス内容: {response.json()}")
3. POSTリクエスト
POSTリクエストは、サーバーにデータを送信するために使用されます。
例えば、新しいリソースを作成する場合です。
# URLの指定
url = 'https://api.example.com/posts'
# データの指定
data = {
'title': 'foo',
'body': 'bar',
'userId': 1
}
# POSTリクエストの送信
response = requests.post(url, json=data)
# ステータスコードの確認
print(f"ステータスコード: {response.status_code}")
# レスポンス内容の表示
print(f"レスポンス内容: {response.json()}")
4. ヘッダーの設定
リクエストヘッダーを設定することで、認証情報やカスタムヘッダーを送信することができます。
# URLの指定
url = 'https://api.example.com/posts'
# ヘッダーの指定
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
}
# GETリクエストの送信
response = requests.get(url, headers=headers)
# ステータスコードの確認
print(f"ステータスコード: {response.status_code}")
# レスポンス内容の表示
print(f"レスポンス内容: {response.json()}")
5. タイムアウトの設定
タイムアウトを設定することで、リクエストが指定された時間内に完了しない場合にエラーを発生させることができます。
# URLの指定
url = 'https://api.example.com/posts/1'
# タイムアウトの設定(5秒)
try:
response = requests.get(url, timeout=5)
print(f"ステータスコード: {response.status_code}")
print(f"レスポンス内容: {response.json()}")
except requests.exceptions.Timeout:
print("リクエストがタイムアウトしました")
6. エラーハンドリング
リクエストが失敗した場合にエラーハンドリングを行う方法です。
# URLの指定
url = 'https://api.example.com/posts/invalid'
# GETリクエストの送信
response = requests.get(url)
# ステータスコードの確認
if response.status_code == 200:
print(f"レスポンス内容: {response.json()}")
else:
print(f"エラーが発生しました。ステータスコード: {response.status_code}")
以上