Python

最終更新日: 2023.03.31 (公開: 2023.03.31)

PythonのRequestsの使い方は?インストール方法や注意点を解説

PythonのRequestsの使い方は?インストール方法や注意点を解説

本記事では、PythonライブラリのRequestsのインストール方法や注意点、ライブラリの使い方について解説します。

「Requests」はHTTPライブラリと呼ばれるもので、Pythonライブラリのひとつです。「Requests」を使用することで、複数のHTTPメソッドを実行できるため、「Python」を使ううえで知っておきたいツールとなります。

しかし、「HTTPライブラリやメソッドとは何か」「Requestsはどの場面で使用するのか」という疑問を持つ方もいるのではないでしょうか。本記事では、「Requests」のインストール方法から注意点、使用方法まで詳しく解説します。「Python」でHTTP通信を行いたい方は、ぜひ参考にしてください。

PythonのRequestsって何?

PythonのRequestsって何?

ここでは、PythonライブラリのRequestsやHTTPライブラリの概要、「Requests」の特徴について解説します。「Requests」の基礎を押さえておいてください。

そもそもPythonとは

「Python」とはインタープリタ型の高水準汎用プログラミング言語のひとつです。「Python」は、世界中にある数多くのWebアプリケーション開発に使用されています。そのほかにもAI分野や機械学習などに幅広く活用されているため、IT業界では需要が高く人気のあるプログラミング言語です。

「Python」は記述が簡単なプログラミング言語であるため、プログラミング初心者にとっても取り組みやすい言語といえるでしょう。

また「Python」は、ライブラリが豊富という特徴も持っています。ライブラリが豊富なため、「Python」のみでさまざまな機能が実現可能です。

HTTPライブラリとは

HTTPとは、WebサーバーとWebクライアント(ブラウザ)の間で情報を送受信するためのプロトコル(通信規約)です。HTTPライブラリとは、このHTTPを扱うためのライブラリを指します。

HTTPライブラリを使用すると、ブラウザを立ち上げることなくプログラムからサーバーに対してリクエストを送り、Web上の情報を取り出せるのです。

HTTPライブラリを使用する場面として、「Webスクレイピング」でWeb上から必要な情報を高速に取得するときや、Web APIを使用するときなどがあげられるでしょう。

「Python」にはHTTPに関する標準ライブラリがあります。「Requests」は「Python」の標準ライブラリではありませんが、標準のライブラリよりも使いやすいため、多くの人が「Requests」をインストールして使用しているのです。

PythonのRequestsがもつ特徴

PythonライブラリのRequestsは「HTTP for Humans」と呼ばれている通り、人間にとって読みやすく比較的簡単にHTTPリクエストを実行できる特徴を持っているのです。

Requestsモジュールには、GET/POSTなどのメソッドと応答する関数や、HTTPリクエスト/HTTPレスポンスを表現するクラスが用意されています。

WebサイトからHTMLデータを取得し、特定のデータを抽出するWebスクレイピングにおいて、Requestsモジュールは「データの取得」という最初の重要な役割を担っているのです。

PythonのRequestsのインストール方法

PythonのRequestsのインストール方法

ここからは、Pythonライブラリの「Requests」のインストール方法を解説します。最初に「コマンドプロンプト」を開きます。次に、コマンドプロンプトに以下のコードを入力してください。

pip install requests

上記のコードを入力したらEnterキーを押します。Anacondaであれば、コマンドプロンプトを開き、プロンプト上に以下のコードを入力して、Enterキーを押しましょう。

conda install -c anaconda requests

その後、Requestsのインストールが開始され、コマンドプロンプト上にさまざまな文字が表示されます。処理が終了すればRequestsのインストールは完了です。

proxy環境下の場合は、コマンドプロンプト上に以下のコードを入力してEnterキーを押してください。

pip install requests —proxy http://user:[email protected]:port

PythonのRequestsの使い方を解説

PythonのRequestsの使い方を解説

ここでは、主に「Requests」でよく使用される以下のメソッドの使い方を説明します。

  • GET
  • POST
  • PUT
  • DELETE

これらのメソッドはWebスクレイピングでもよく利用されます。これらの「Requests」の基本的な使い方を覚えておきましょう。

GET

GETメソッドは、Webページ上のHTMLやXMLなどの情報を取得する際に使用します。get()の使い方の例は以下の通りです。

import requests
response = requests.get(‘対象となるURL’)

get()の第一引数に必ず「情報を取得したいWebページのURL」を文字列で指定してください。第二引数以降の引数は、任意で指定します。

URL以外の引数は以下の通りです。

引数 内容
headers 辞書 ヘッダを指定
timeout 数値 タイムアウト時間
params 辞書 URLのqueryのパラメータ
cookies 辞書 クッキーを指定

get()は戻り値としてresponseオブジェクトを返します。

POST

POSTメソッドは、Webサーバへ情報を登録する際に使用します。post()を使うことで、記事の新規作成も可能です。使い方の例は以下となります。

import requests
response = requests.post(‘記事を新規作成する際の対象となるURL’)

URL以外で、よく使われる引数は以下の通りです。

引数 内容
headers 辞書 ヘッダを指定
data 辞書 ポストパラメータを指定
files 辞書 アップロードするファイルを指定

post()は戻り値としてresponseオブジェクトを返します。

PUT

PUTメソッドは、Webサーバの情報を更新する際に使用します。put()を使うことで、タグIDの埋め込みが可能です。使い方の例は以下となります。

import requests
response = requests.put(‘更新する記事のURL’)

URL以外で、よく使われる引数は以下の通りです。

引数 内容
headers 辞書 ヘッダを指定
data 辞書 ポストパラメータを指定

put()は戻り値としてresponseオブジェクトを返します。

DELETE

DELETEメソッドはWebサーバの情報を削除する際に使用します。delete()を使うことで、SNSにおいてフォローを外すことも可能です。使い方の例は以下となります。

import requests
response = requests.delete(‘対象となるURL’)

URL以外で、よく使われる引数は以下の通りです。

引数 内容
headers 辞書 ヘッダを指定

delete()は戻り値としてresponseオブジェクトを返します。

PythonのRequestsの戻り値を確認する方法

PythonのRequestsの戻り値を確認する方法

ここでは、Requestsを実行した際の戻り値である「Responseオブジェクト」について解説します。ここで紹介するResponseオブジェクトの属性は、以下の通りです。

  • URL
  • status_code
  • headers
  • encoding
  • text
  • content

それでは順番に見ていきましょう。

URL

URL属性を使い、「Requests」でアクセスしたURLの取得が可能です。URLを取得するプログラムの具体例は以下となります。

import requests

url = ‘https://example.com/’
r = requests.get(url)

print(r.url)

上記のプログラムを実行することで、以下のようにURLを取得可能です。

https://example.com

status_code

status_codeを使うことで、ステータスコードを取得できます。ステータスコードを取得するプログラムの具体例は以下の通りです。

import requests

url = ‘https://example.com/’
r = requests.get(url)

print(r.status_code)

上記のプログラムを実行することで、以下のようにステータスコードを取得できます。

200

この場合、レスポンスに成功したことを表すステータスコード「200」が返ってきたので、成功したことがわかります。

headers

headers属性を使うことで、「Requests」でアクセスしたWebページのレスポンスヘッダを取得できます。Webページのレスポンスヘッダを取得するプログラムの具体例は以下の通りです。

import requests

url = ‘https://example.com/’
r = requests.get(url)

print(r.headers)

上記のプログラムを実行すると、Webページのヘッダ情報をCaseInsensitiveDict型という、辞書型のような型で返してくれるのです。CaseInsentiveDict型は、大文字と小文字を区別しない特徴があります。

扱い方は辞書型と同様で、r.headers[‘キー名’]のようにキーを指定することにより、そのキーにひもづいた値の取得が可能です。

encoding

encoding属性を使うことで、utf-8やunicodeといったエンコーディング方式の情報を取得できます。このときに取得するエンコーディングは、「Requests」が推測したものです。エンコーディングを取得するプログラムの具体例は以下となります。

import requests

url = ‘https://example.com/’
r = requests.get(url)

print(r.encoding)

上記のプログラムを実行することで、以下のようなエンコーディングを取得できます。

Shift_JIS

text

text属性を使用することで、Webページの内容を文字列として取得できます。具体的には、encoding属性でデコードされたhtmlの取得が可能です。text属性を使用するコードの例は、以下の通りとなります。

import requests

url = ‘https://example.com/’
r = requests.get(url)

print(r.text)

content

content属性を使用することで、text属性で拾えなかった「デコードされていない内容」の取得が可能です。画像やファイルなどテキスト以外の情報を、Web上から取得したいときに使います。content属性を使用するコードの例は、以下の通りです。

import requests

url = ‘https://example.com/’
r = requests.get(url)

print(r.content)

たとえば、下記のコードを実行すると、Trueと表示されます。

print(r.content.decode(r.encoding) == r.text)

これは、encoding属性で取得されるエンコーディング方式でデコードした内容が、text属性で得られる内容と等しいことを表します。

リクエストをする際はtimeoutを設定しよう

リクエストをする際はtimeoutを設定しよう

「Requests」を使用してWebページなどにアクセスすると、対象ページのサーバから応答がないために、フリーズしてしまうことがあります。このようなことを防ぐためにも、timeoutを設定する必要があるのです。

ここでは、timeoutの種類や設定方法、timeoutした場合の処理方法について説明します。RequestsなどでHTTPアクセスを行う際は、timeoutの知識が必須になってくるので、押さえておいてください。

2種類のtimeout

timeoutには以下の2種類があります。

  • connect timeout
  • read timeout

connect timeoutとは、相手サーバとの接続を確立するまで待機する時間のことを指します。この待機時間までに接続が確立しなかった場合は、connect timeoutとなるのです。

一方でread timeoutは、相手サーバのレスポンスを待機する時間を指します。相手サーバからの応答に時間を要した場合などに、read timeoutとなるのです。

timeoutを設定する方法

timeoutを指定するには、複数のデータを並べたタプル型で以下のように記述します。

import requests
request = requests.get(‘対象のURL’, timeout=(3.0, 6.0))

timeoutの設定は(connect timeout, read timeout)のように指定して、それぞれの値はfloat型にしましょう。この場合、timeout=(3.0, 6.0)なので、connect timeoutは3.0秒、read timeoutは6.0秒と設定しています。

timeoutの処理方法

timeoutの具体的な使い方は、timeoutを設定してから、timeoutになった場合にエラーを発生させる方法です。この場合のエラーはrequests.exceptions.Timeoutが発生するようになっています。

具体的な処理方法は以下のように、try-except文で処理しましょう。

from requests.exceptions import Timeout

try:
    request = requests.get(‘対象のURL’, timeout=3.0)
except Timeout:
    print(‘timeout’)

上記の場合、connect timeoutの3.0秒に引っかかったら、Timeoutエラーを発生させ「timeout」と表示するようにしています。

PythonのRequestsでWebページのデータを取得しよう

PythonのRequestsでWebページのデータを取得しよう

本記事では、Pythonライブラリの「Requests」の概要や特徴、インストール方法、使い方などについて解説しました。

「Requests」を使用することで、Webページの情報を素早くかつ大量に取得できます。そうすれば人の手では不可能に近い量のデータを、プログラムによって自動で取得でき、そのデータを分析などさまざまな用途に利用可能です。

「Requests」は便利なライブラリなので、Pythonユーザーであればマスターすることをおすすめします。

アクセスランキング 人気のある記事をピックアップ!

    コードカキタイがオススメする記事!

    1. 子供におすすめのプログラミングスクール10選!学習メリットや教室選びのコツも紹介

      2024.06.17

      子供におすすめのプログラミングスクール10選!学習メリットや教室選びのコツも紹介

      #プログラミングスクール

    2. 【完全版】大学生におすすめのプログラミングスクール13選!選ぶコツも詳しく解説

      2022.01.06

      【完全版】大学生におすすめのプログラミングスクール13選!選ぶコツも詳しく解説

      #プログラミングスクール

    3. 【未経験でも転職可】30代におすすめプログラミングスクール8選!

      2024.01.26

      【未経験でも転職可】30代におすすめプログラミングスクール8選!

      #プログラミングスクール

    4. 初心者必見!独学のJava学習方法とおすすめ本、アプリを詳しく解説

      2024.01.26

      初心者必見!独学のJava学習方法とおすすめ本、アプリを詳しく解説

      #JAVA

    5. 忙しい社会人におすすめプログラミングスクール15選!失敗しない選び方も詳しく解説

      2024.01.26

      忙しい社会人におすすめプログラミングスクール15選!失敗しない選び方も詳しく解説

      #プログラミングスクール

    1. 【無料あり】大阪のおすすめプログラミングスクール14選!スクール選びのコツも紹介

      2022.01.06

      【無料あり】大阪のおすすめプログラミングスクール14選!スクール選びのコツも紹介

      #プログラミングスクール

    2. 【目的別】東京のおすすめプログラミングスクール20選!スクール選びのコツも徹底解説

      2024.01.26

      【目的別】東京のおすすめプログラミングスクール20選!スクール選びのコツも徹底解説

      #プログラミングスクール

    3. 【無料あり】福岡のおすすめプログラミングスクール13選!選び方も詳しく解説

      2024.01.26

      【無料あり】福岡のおすすめプログラミングスクール13選!選び方も詳しく解説

      #プログラミングスクール

    4. 【徹底比較】名古屋のおすすめプログラミングスクール13選!選び方も詳しく解説

      2024.01.26

      【徹底比較】名古屋のおすすめプログラミングスクール13選!選び方も詳しく解説

      #プログラミングスクール

    5. 【徹底比較】おすすめのプログラミングスクール18選!失敗しない選び方も徹底解説

      2024.01.26

      【徹底比較】おすすめのプログラミングスクール18選!失敗しない選び方も徹底解説

      #プログラミングスクール