Pythonのrequestsモジュール getメソッドでURLのウェブページから情報を取得する方法

※本ページはアフィリエイト広告を利用しています

今日のインターネット社会では、様々な情報がWeb上に公開されています。それらの情報を自動的に取得し分析するためには、プログラムを用いてWebページの情報を取得(スクレイピング)する技術が必要となります。

Pythonでは、このようなタスクを簡単に行うことができるモジュールとして requests があります。この記事では、 requests モジュールの get メソッドを使って、特定のURLのページ情報を取得する方法について解説します。

目次

Requestsモジュールとは

Pythonの requests モジュールは、HTTPプロトコルを用いた通信を非常に直感的で簡単に扱うことができるライブラリです。基本的なHTTPメソッド(GET、POST、PUT、DELETEなど)をサポートしており、ヘッダーやクッキーの操作、ファイルのアップロード・ダウンロード、セッションの管理など、HTTP通信に関連する多くの機能を提供しています。

また、 requests モジュールはエラーハンドリングも容易に行えます。例えば、 Response オブジェクトの status_code 属性をチェックすることで、リクエストが成功したかどうかを判断することができます。これにより、HTTP通信のエラーを効率的に管理することが可能です。

このように、 requests モジュールはその使いやすさと柔軟性から、PythonでのHTTP通信を行う際のデファクトスタンダードとも言えるライブラリとなっています。これを用いれば、複雑なHTTP通信も簡潔なコードで実現することができます。

Requestsモジュールのインストール

requests モジュールはPythonの標準ライブラリではないため、使用する前にインストールする必要があります。

ターミナルで以下のコマンドを実行してください。

pip install requests

requests getメソッドでWebの情報を取得する

requests.get メソッドは、指定したURLに対してHTTP GETリクエストを送信し、サーバーからのレスポンスを取得するために使用されます。このメソッドは Response オブジェクトを返し、これによりレスポンスの本文、ステータスコード、ヘッダーなどの情報を簡単に取得することができます。

import requests

response = requests.get('https://www.example.com')
print(response.text)

Response オブジェクト

requests モジュールでHTTPリクエストを送信すると、サーバーからのレスポンスは Response オブジェクトとして返されます。この Response オブジェクトには、HTTPレスポンスに関連する様々な情報が含まれています。

例えば、レスポンスの本文、ステータスコード、ヘッダー情報などを取得することができます。これらの情報は Response オブジェクトのプロパティとしてアクセス可能で、リクエストが成功したかどうかを判断したり、レスポンスの内容を解析したりするために使用します。

  1. status_code:
    • 説明: HTTPレスポンスのステータスコードを返します。例えば、200は成功、404はページが見つからない、500はサーバー内部エラーを表します。
    • 使用例: status_code = response.status_code
  2. headers:
    • 説明: HTTPレスポンスのヘッダーを辞書形式で返します。ヘッダーには、コンテンツタイプ、日付、サーバー名などの情報が含まれます。
    • 使用例: headers = response.headers
  3. encoding:
    • 説明: レスポンスのエンコーディングを返します。このエンコーディングはHTTPヘッダーから推定されます。エンコーディングは、テキストの文字セット(例えば、UTF-8、ISO-8859-1など)を指定します。
    • 使用例: encoding = response.encoding
  4. text:
    • 説明: レスポンスのコンテンツを文字列として返します。エンコーディングは response.encoding を使用してデコードされます。
    • 使用例: text = response.text
  5. content:
    • 説明: レスポンスのコンテンツをバイト形式で返します。これはテキストだけでなく、画像やその他のバイナリデータを取得する際にも使用します。
    • 使用例: content = response.content

作成したPythonコード

このコードは指定したURLにGETリクエストを送信し、レスポンスの各種情報を表示しています。

バイナリコンテンツは output.bin というファイルに保存されます。これは画像や音声など、テキストではないデータを取得したい場合に使います。

import requests

# URLを定義します
url = 'https://www.example.com'

# GETリクエストを送信します
response = requests.get(url)

# ステータスコードを確認します
if response.status_code == 200:
    # ステータスコードが200の場合(成功の場合)、レスポンスのテキスト(HTML等)を表示します
    print(response.text)
else:
    # ステータスコードが200以外の場合(エラーの場合)、エラーとステータスコードを表示します
    print("Error:", response.status_code)

# レスポンスヘッダーを表示します
print("Headers:", response.headers)

# レスポンスのエンコーディングを表示します
print("Encoding:", response.encoding)

# レスポンスのバイナリコンテンツを取得し、それをファイルに保存します
# ここでは 'output.bin' という名前のファイルに保存しています
with open('output.bin', 'wb') as f:
    f.write(response.content)

Pythonコードの実行結果

対象ページ

先ほど作成したプログラムを私が運営しているサイトの以下のURLを指定して実行してみました。

実行結果

実行した結果、以下のように情報を取得することができました。

Headers: {'Server': 'nginx', 'Date': 'Mon, 10 Jul 2023 04:48:37 GMT', 'Content-Type': 'text/html; charset=UTF-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'X-Powered-By': 'PHP/7.4.33', 'X-Pingback': 'https://murasan-net.com/xmlrpc.php', 'Vary': 'User-Agent', 'Link': '<https://murasan-net.com/index.php/wp-json/>; rel="https://api.w.org/", <https://murasan-net.com/index.php/wp-json/wp/v2/posts/10611>; rel="alternate"; type="application/json", <https://murasan-net.com/?p=10611>; rel=shortlink'}
Encoding: UTF-8

content プロパティから取得してファイルに保存されたデータは以下の通りです。

まとめ

Pythonの requests モジュールの get メソッドを用いたWebページ情報の取得方法について解説しました。

requests モジュールはその直感的なインターフェースと豊富な機能により、HTTP通信を行うPythonプログラムの中で広く使われています。

今回学んだ get メソッドと Response オブジェクトの活用により、さまざまなWebサイトから情報を効率的に取得し、それを利用したデータ分析や情報収集が可能になります。Pythonと requests モジュールを使って、自動化の世界をさらに探索してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次