初めてのWebリクエストを送ってみよう
学習の目標
本章では、以下の内容を学習します。
- requests.get()を使った基本的なWebリクエストの送信方法を理解する
- 簡単なWebサイトにアクセスしてレスポンスを受け取る方法を習得する
- レスポンスの内容を確認する方法を学ぶ
- 基本的なエラー処理の方法を理解する
最初のWebリクエストを送ってみよう
それでは、実際にrequestsライブラリを使って、インターネット上のWebサイトにアクセスしてみましょう。
VS Codeで新しいファイル first_request.py を作成し、以下のコードを入力してください。
# requestsライブラリをインポートimport requests
# 簡単なWebサイトにGETリクエストを送信response = requests.get("https://httpbin.org/get")
print("リクエストが完了しました")print(f"ステータスコード: {response.status_code}")このプログラムを実行してみましょう。
python first_request.py実行結果は以下のようになります。
リクエストが完了しましたステータスコード: 200おめでとうございます!これで初めてのWebリクエストが成功しました。
requests.get()という関数を使うことで、指定したURLにGETリクエストを送ることができます。今回アクセスしたhttps://httpbin.org/getは、HTTP通信のテストに使える便利なWebサイトです。
ステータスコードとは
response.status_codeで表示された200という数字は、ステータスコードと呼ばれるものです。これは、サーバーからの返事の状態を表す数字です。
ステータスコードには、以下のような意味があります。
| ステータスコード | 意味 | 説明 | 
|---|---|---|
| 200 | 成功 | リクエストが正常に処理された | 
| 404 | 見つからない | 指定したページが存在しない | 
| 500 | サーバーエラー | サーバー側で何らかの問題が発生 | 
200が表示されたということは、リクエストが正常に処理されたということです。まるで郵便を送ったときに「無事に届きました」という返事をもらったような状態です。
レスポンスの内容を確認してみよう
サーバーからの返事には、ステータスコード以外にも様々な情報が含まれています。その内容を確認してみましょう。
同じファイルに以下のコードを追加してください。
# requestsライブラリをインポートimport requests
# 簡単なWebサイトにGETリクエストを送信response = requests.get("https://httpbin.org/get")
print("リクエストが完了しました")print(f"ステータスコード: {response.status_code}")
# レスポンスの詳細情報を確認print(f"レスポンスのサイズ: {len(response.text)}文字")print(f"レスポンスの種類: {response.headers.get('content-type')}")プログラムを実行すると、以下のような結果が表示されます。
リクエストが完了しましたステータスコード: 200レスポンスのサイズ: 312文字レスポンスの種類: application/jsonresponse.textは、サーバーから返ってきた内容を文字列として取得できます。また、response.headersには、レスポンスに関する詳細な情報が含まれています。
レスポンスの中身を見てみよう
実際にサーバーから返ってきた内容を表示してみましょう。以下のコードを追加してください。
# requestsライブラリをインポートimport requests
# 簡単なWebサイトにGETリクエストを送信response = requests.get("https://httpbin.org/get")
print("リクエストが完了しました")print(f"ステータスコード: {response.status_code}")
# レスポンスの詳細情報を確認print(f"レスポンスのサイズ: {len(response.text)}文字")print(f"レスポンスの種類: {response.headers.get('content-type')}")
# レスポンスの中身を表示print("\n=== サーバーからの返事 ===")print(response.text)プログラムを実行すると、以下のような結果が表示されます。
リクエストが完了しましたステータスコード: 200レスポンスのサイズ: 312文字レスポンスの種類: application/json
=== サーバーからの返事 ==={  "args": {},  "headers": {    "Accept": "*/*",    "Accept-Encoding": "gzip, deflate",    "Host": "httpbin.org",    "User-Agent": "python-requests/2.31.0"  },  "origin": "xxx.xxx.xxx.xxx",  "url": "https://httpbin.org/get"}この結果は、JSON形式という特別な形式で返ってきています。JSONについては次回詳しく学習しますが、今は「サーバーから構造化されたデータが返ってきている」ということを理解しておいてください。
別のWebサイトにもアクセスしてみよう
今度は、実際に存在するWebサイトにアクセスしてみましょう。新しいファイル website_request.py を作成し、以下のコードを入力してください。
# 実際のWebサイトにアクセスimport requests
# GoogleのWebサイトにアクセスprint("Googleにアクセスしています...")response = requests.get("https://www.google.com")
print(f"ステータスコード: {response.status_code}")print(f"レスポンスのサイズ: {len(response.text)}文字")
# HTMLの最初の部分だけを表示print("\n=== HTMLの最初の200文字 ===")print(response.text[:200])このプログラムを実行してみましょう。
python website_request.py実行結果は以下のようになります。
Googleにアクセスしています...ステータスコード: 200レスポンスのサイズ: 15234文字
=== HTMLの最初の200文字 ===<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="ja"><head><meta content="世界中のあらゆる情報を検索するためのツールを提供しています。さまざまな検索機能を活用して、お探しの情報を見つけてください。" name="description"GoogleのWebサイトから、HTML形式のデータが返ってきました。普段ブラウザで見ているWebページは、実はこのようなHTMLというコードで作られているのです。
エラーが発生した場合の対処法
Webリクエストでは、時々エラーが発生することがあります。存在しないページにアクセスしたときの例を見てみましょう。
新しいファイル error_handling.py を作成し、以下のコードを入力してください。
# 存在しないページにアクセスしてエラーを確認import requests
# 存在しないページにアクセスprint("存在しないページにアクセスしています...")response = requests.get("https://httpbin.org/status/404")
print(f"ステータスコード: {response.status_code}")
# ステータスコードで成功か失敗かを判定if response.status_code == 200:    print("✓ リクエストが成功しました")else:    print(f"✗ リクエストが失敗しました(エラーコード: {response.status_code})")このプログラムを実行すると、以下のような結果が表示されます。
存在しないページにアクセスしています...ステータスコード: 404✗ リクエストが失敗しました(エラーコード: 404)ステータスコード404は、「ページが見つからない」ということを意味しています。ブラウザで間違ったURLにアクセスしたときに表示される「404 Not Found」エラーと同じです。
より安全なエラー処理を追加しよう
実際のプログラムでは、ネットワークエラーなど様々な問題が発生する可能性があります。そのため、try-except文を使ってエラー処理を行うことが重要です。
以下のコードを追加してみましょう。
# より安全なエラー処理import requests
def safe_request(url):    try:        print(f"アクセス中: {url}")        response = requests.get(url)                if response.status_code == 200:            print("✓ 正常にアクセスできました")            return response        else:            print(f"✗ エラーが発生しました(ステータスコード: {response.status_code})")            return None                except requests.exceptions.RequestException as e:        print(f"✗ ネットワークエラーが発生しました: {e}")        return None
# 正常なURLでテストresult1 = safe_request("https://httpbin.org/get")
# エラーになるURLでテストresult2 = safe_request("https://httpbin.org/status/500")このプログラムを実行すると、以下のような結果が表示されます。
アクセス中: https://httpbin.org/get✓ 正常にアクセスできましたアクセス中: https://httpbin.org/status/500✗ エラーが発生しました(ステータスコード: 500)このsafe_request関数は、様々なエラーに対応できる安全なリクエスト処理を行います。実際のプログラムでは、このようなエラー処理を必ず含めることが大切です。
リクエストの流れを理解しよう
最後に、今回学習したWebリクエストの流れを整理してみましょう。
- リクエストの準備:アクセスしたいURLを決める
- リクエストの送信:requests.get()でサーバーに要求を送る
- レスポンスの受信:サーバーからの返事を受け取る
- 結果の確認:ステータスコードで成功・失敗を判定する
- データの取得:必要に応じてレスポンスの内容を取り出す
このような流れで、Pythonプログラムからインターネット上の様々な情報にアクセスできるようになります。
たとえば、ニュースサイトから最新記事を取得したり、天気予報サービスから天気情報を取得したりすることが可能です。ただし、それらの多くは特別な形式(JSON)でデータが提供されているため、次回はそのJSONデータの扱い方を学習していきます。
まとめ
本章では、requestsライブラリを使って初めてのWebリクエストを送信する方法を学習しました。
requests.get()関数を使うことで、指定したURLにアクセスして情報を取得できるようになりました。また、ステータスコードを確認することで、リクエストが成功したかどうかを判定できることも学びました。
重要なポイントは以下の通りです。
- requests.get(URL)でWebサイトにアクセスできる
- response.status_codeで結果の成功・失敗を確認できる
- response.textでサーバーからの返事の内容を取得できる
- エラー処理を含めることで安全なプログラムを作れる
これで、Pythonプログラムからインターネット上の情報にアクセスする基本的な方法をマスターしました。次回は、サーバーから返ってくるJSONデータの扱い方を学習して、より実用的なデータの取得方法を身につけていきましょう。
Starterプランでより詳しく学習
この先のコンテンツを読むにはStarterプラン以上が必要です。より詳細な解説、実践的なサンプルコード、演習問題にアクセスして学習を深めましょう。