PythonでWebサービスとやり取りするにはHTTPリクエストが欠かせません。特に「requests」ライブラリはシンプルで使いやすく、初心者から上級者まで広く利用されています。本記事では、requestsを使ったHTTPリクエストの基本から応用、よくあるエラーまでわかりやすく解説します。
requestsとは?
「requests」は、PythonでHTTP通信を簡単に扱うためのライブラリです。標準ライブラリのurllib
に比べてシンプルで読みやすいコードが書けるため、多くのエンジニアに支持されています。公式サイトでも「人間のためのHTTPライブラリ」と紹介されているほどです。例えば、数行のコードでWebサイトにアクセスしてデータを取得できます。
requestsのインストール方法
requestsは標準ライブラリには含まれていないため、事前にインストールが必要です。ターミナルまたはコマンドプロンプトで以下のコマンドを実行しましょう。
pip install requests
もしPython環境が複数ある場合はpip3
を利用することもあります。インストールが成功したら、次のサンプルコードを実行できる状態になります。
HTTPリクエストの基本
GETリクエスト
最も基本的なのはGETリクエストです。以下の例では、WebページのHTMLを取得しています。
import requests
url = "https://httpbin.org/get"
response = requests.get(url)
print(response.status_code) # ステータスコード
print(response.text) # レスポンス本文
ステータスコードが200であればリクエスト成功です。また、取得したHTMLやJSONを解析してデータを活用できます。
POSTリクエスト
次に、サーバーへデータを送信するPOSTリクエストです。例えばログイン処理やフォーム送信などで利用されます。
import requests
url = "https://httpbin.org/post"
data = {"username": "test", "password": "1234"}
response = requests.post(url, data=data)
print(response.json())
この例ではフォームデータを送信し、サーバー側から返ってきたJSONを表示しています。
よく使うリクエストの応用
ヘッダーを指定する
リクエストには追加情報を含めることができます。例えば、User-Agentを指定してブラウザからのアクセスを装うことも可能です。
headers = {"User-Agent": "Mozilla/5.0"}
response = requests.get("https://httpbin.org/headers", headers=headers)
print(response.json())
タイムアウトを設定する
通信が遅い場合や応答がない場合に備えて、タイムアウトを設定しておくと安心です。
response = requests.get("https://httpbin.org/delay/3", timeout=2)
この例では2秒以内に応答がなければ例外が発生します。これによりプログラムの無限待ちを防げます。
JSONデータを扱う
APIとのやり取りではJSONが一般的です。requestsではレスポンスを簡単にJSONとして扱えます。
response = requests.get("https://httpbin.org/json")
data = response.json()
print(data["slideshow"]["title"])
このようにして辞書型としてデータを扱えるため、Pythonでの処理がしやすくなります。
よくあるエラーと注意点
requestsを利用する際にはいくつかの注意点があります。
- Timeoutエラー:サーバーからの応答が遅いときに発生します。
timeout
を指定することで回避可能です。 - ConnectionError:ネットワークに接続できない場合に発生します。
- ステータスコード:200以外の場合はエラーの可能性があります。
response.raise_for_status()
を使うと例外が発生し、エラーハンドリングが容易になります。
また、APIやWebサイトによってはアクセス制限が設けられている場合があるため、利用規約を必ず確認してから使用してください。
さらに便利な使い方
requestsはシンプルながら強力で、以下のような活用方法もあります。
- セッション管理(
requests.Session()
を使うことでログイン状態を保持) - Cookieの取得・送信
- ファイルのアップロードやダウンロード
例えば、画像をダウンロードするコードは次のように書けます。
url = "https://httpbin.org/image/png"
response = requests.get(url)
with open("sample.png", "wb") as f:
f.write(response.content)
わずか数行でWebからファイルを保存できるのは非常に便利です。
Python初心者におすすめのサービス
「もっと実践的なコード例が欲しい」「自分の用途に合わせて教えてほしい」という方には、
テックアカデミーがおすすめです。
AI関連コースやシステム開発コース、アプリ開発コースなど豊富な学習が可能です。
さらに今なら無料相談でアマギフプレゼントもあるので、気軽にお申込みしてみてください。
また、プログラミング学習のプラットフォームとして、ココナラでは、現役エンジニアや経験豊富なPython講師が、あなたのレベルや目的に合わせてマンツーマンで指導してくれます。
書籍や動画ではカバーしきれない、あなた専用のカリキュラムで学べるのが最大の魅力。短時間で効率的にスキルを伸ばしたいなら、まずは出品者のサービスをチェックしてみましょう。
また、教える側としてスキルを活かして副業・独立を目指すことも可能です。
プログラミング経験やPythonの知識があれば、自分の得意分野をサービスとして出品し、全国の学習者から直接依頼を受けられます。オンラインで完結するため、場所や時間に縛られず、自分のペースで働けるのも大きなメリットです。
こちらのリンクから詳細をチェックしてみてください。
まとめ
PythonでHTTPリクエストを行うならrequestsが最適です。基本的なGETやPOSTから、ヘッダー指定やJSON処理まで幅広く対応できます。エラーハンドリングや利用規約の確認を忘れずに、安全に活用していきましょう。
以下のリンクから、
SESの組込みシステムから色々な不満を持ち、自社WEBサービスへ転職した実体験の記事がありますので、是非読んでみてください。とても喜びます。
SESの組込みシステムから自社WEBサービスのエンジニアに転職した話

コメント