本記事では、PythonライブラリのRequestsのインストール方法や注意点、ライブラリの使い方について解説します。
「Requests」はHTTPライブラリと呼ばれるもので、Pythonライブラリのひとつです。「Requests」を使用することで、複数のHTTPメソッドを実行できるため、「Python」を使ううえで知っておきたいツールとなります。
しかし、「HTTPライブラリやメソッドとは何か」「Requestsはどの場面で使用するのか」という疑問を持つ方もいるのではないでしょうか。本記事では、「Requests」のインストール方法から注意点、使用方法まで詳しく解説します。「Python」でHTTP通信を行いたい方は、ぜひ参考にしてください。
目次
ここでは、PythonライブラリのRequestsやHTTPライブラリの概要、「Requests」の特徴について解説します。「Requests」の基礎を押さえておいてください。
「Python」とはインタープリタ型の高水準汎用プログラミング言語のひとつです。「Python」は、世界中にある数多くのWebアプリケーション開発に使用されています。そのほかにもAI分野や機械学習などに幅広く活用されているため、IT業界では需要が高く人気のあるプログラミング言語です。
「Python」は記述が簡単なプログラミング言語であるため、プログラミング初心者にとっても取り組みやすい言語といえるでしょう。
また「Python」は、ライブラリが豊富という特徴も持っています。ライブラリが豊富なため、「Python」のみでさまざまな機能が実現可能です。
HTTPとは、WebサーバーとWebクライアント(ブラウザ)の間で情報を送受信するためのプロトコル(通信規約)です。HTTPライブラリとは、このHTTPを扱うためのライブラリを指します。
HTTPライブラリを使用すると、ブラウザを立ち上げることなくプログラムからサーバーに対してリクエストを送り、Web上の情報を取り出せるのです。
HTTPライブラリを使用する場面として、「Webスクレイピング」でWeb上から必要な情報を高速に取得するときや、Web APIを使用するときなどがあげられるでしょう。
「Python」にはHTTPに関する標準ライブラリがあります。「Requests」は「Python」の標準ライブラリではありませんが、標準のライブラリよりも使いやすいため、多くの人が「Requests」をインストールして使用しているのです。
PythonライブラリのRequestsは「HTTP for Humans」と呼ばれている通り、人間にとって読みやすく比較的簡単にHTTPリクエストを実行できる特徴を持っているのです。
Requestsモジュールには、GET/POSTなどのメソッドと応答する関数や、HTTPリクエスト/HTTPレスポンスを表現するクラスが用意されています。
WebサイトからHTMLデータを取得し、特定のデータを抽出するWebスクレイピングにおいて、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
ここでは、主に「Requests」でよく使用される以下のメソッドの使い方を説明します。
これらのメソッドはWebスクレイピングでもよく利用されます。これらの「Requests」の基本的な使い方を覚えておきましょう。
GETメソッドは、Webページ上のHTMLやXMLなどの情報を取得する際に使用します。get()の使い方の例は以下の通りです。
import requests response = requests.get(‘対象となるURL’)
get()の第一引数に必ず「情報を取得したいWebページのURL」を文字列で指定してください。第二引数以降の引数は、任意で指定します。
URL以外の引数は以下の通りです。
引数 | 型 | 内容 |
---|---|---|
headers | 辞書 | ヘッダを指定 |
timeout | 数値 | タイムアウト時間 |
params | 辞書 | URLのqueryのパラメータ |
cookies | 辞書 | クッキーを指定 |
get()は戻り値としてresponseオブジェクトを返します。
POSTメソッドは、Webサーバへ情報を登録する際に使用します。post()を使うことで、記事の新規作成も可能です。使い方の例は以下となります。
import requests response = requests.post(‘記事を新規作成する際の対象となるURL’)
URL以外で、よく使われる引数は以下の通りです。
引数 | 型 | 内容 |
---|---|---|
headers | 辞書 | ヘッダを指定 |
data | 辞書 | ポストパラメータを指定 |
files | 辞書 | アップロードするファイルを指定 |
post()は戻り値としてresponseオブジェクトを返します。
PUTメソッドは、Webサーバの情報を更新する際に使用します。put()を使うことで、タグIDの埋め込みが可能です。使い方の例は以下となります。
import requests response = requests.put(‘更新する記事のURL’)
URL以外で、よく使われる引数は以下の通りです。
引数 | 型 | 内容 |
---|---|---|
headers | 辞書 | ヘッダを指定 |
data | 辞書 | ポストパラメータを指定 |
put()は戻り値としてresponseオブジェクトを返します。
DELETEメソッドはWebサーバの情報を削除する際に使用します。delete()を使うことで、SNSにおいてフォローを外すことも可能です。使い方の例は以下となります。
import requests response = requests.delete(‘対象となるURL’)
URL以外で、よく使われる引数は以下の通りです。
引数 | 型 | 内容 |
---|---|---|
headers | 辞書 | ヘッダを指定 |
delete()は戻り値としてresponseオブジェクトを返します。
ここでは、Requestsを実行した際の戻り値である「Responseオブジェクト」について解説します。ここで紹介するResponseオブジェクトの属性は、以下の通りです。
それでは順番に見ていきましょう。
URL属性を使い、「Requests」でアクセスしたURLの取得が可能です。URLを取得するプログラムの具体例は以下となります。
import requests url = ‘https://example.com/’ r = requests.get(url) print(r.url)
上記のプログラムを実行することで、以下のようにURLを取得可能です。
https://example.com
status_codeを使うことで、ステータスコードを取得できます。ステータスコードを取得するプログラムの具体例は以下の通りです。
import requests url = ‘https://example.com/’ r = requests.get(url) print(r.status_code)
上記のプログラムを実行することで、以下のようにステータスコードを取得できます。
200
この場合、レスポンスに成功したことを表すステータスコード「200」が返ってきたので、成功したことがわかります。
headers属性を使うことで、「Requests」でアクセスしたWebページのレスポンスヘッダを取得できます。Webページのレスポンスヘッダを取得するプログラムの具体例は以下の通りです。
import requests url = ‘https://example.com/’ r = requests.get(url) print(r.headers)
上記のプログラムを実行すると、Webページのヘッダ情報をCaseInsensitiveDict型という、辞書型のような型で返してくれるのです。CaseInsentiveDict型は、大文字と小文字を区別しない特徴があります。
扱い方は辞書型と同様で、r.headers[‘キー名’]のようにキーを指定することにより、そのキーにひもづいた値の取得が可能です。
encoding属性を使うことで、utf-8やunicodeといったエンコーディング方式の情報を取得できます。このときに取得するエンコーディングは、「Requests」が推測したものです。エンコーディングを取得するプログラムの具体例は以下となります。
import requests url = ‘https://example.com/’ r = requests.get(url) print(r.encoding)
上記のプログラムを実行することで、以下のようなエンコーディングを取得できます。
Shift_JIS
text属性を使用することで、Webページの内容を文字列として取得できます。具体的には、encoding属性でデコードされたhtmlの取得が可能です。text属性を使用するコードの例は、以下の通りとなります。
import requests url = ‘https://example.com/’ r = requests.get(url) print(r.text)
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属性で得られる内容と等しいことを表します。
「Requests」を使用してWebページなどにアクセスすると、対象ページのサーバから応答がないために、フリーズしてしまうことがあります。このようなことを防ぐためにも、timeoutを設定する必要があるのです。
ここでは、timeoutの種類や設定方法、timeoutした場合の処理方法について説明します。RequestsなどでHTTPアクセスを行う際は、timeoutの知識が必須になってくるので、押さえておいてください。
timeoutには以下の2種類があります。
connect timeoutとは、相手サーバとの接続を確立するまで待機する時間のことを指します。この待機時間までに接続が確立しなかった場合は、connect timeoutとなるのです。
一方でread timeoutは、相手サーバのレスポンスを待機する時間を指します。相手サーバからの応答に時間を要した場合などに、read 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になった場合にエラーを発生させる方法です。この場合のエラーは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」の概要や特徴、インストール方法、使い方などについて解説しました。
「Requests」を使用することで、Webページの情報を素早くかつ大量に取得できます。そうすれば人の手では不可能に近い量のデータを、プログラムによって自動で取得でき、そのデータを分析などさまざまな用途に利用可能です。
「Requests」は便利なライブラリなので、Pythonユーザーであればマスターすることをおすすめします。
2024.06.17
子供におすすめのプログラミングスクール10選!学習メリットや教室選びのコツも紹介
#プログラミングスクール
2022.01.06
【完全版】大学生におすすめのプログラミングスクール13選!選ぶコツも詳しく解説
#プログラミングスクール
2024.01.26
【未経験でも転職可】30代におすすめプログラミングスクール8選!
#プログラミングスクール
2024.01.26
初心者必見!独学のJava学習方法とおすすめ本、アプリを詳しく解説
#JAVA
2024.01.26
忙しい社会人におすすめプログラミングスクール15選!失敗しない選び方も詳しく解説
#プログラミングスクール
2022.01.06
【無料あり】大阪のおすすめプログラミングスクール14選!スクール選びのコツも紹介
#プログラミングスクール
2024.01.26
【目的別】東京のおすすめプログラミングスクール20選!スクール選びのコツも徹底解説
#プログラミングスクール
2024.01.26
【無料あり】福岡のおすすめプログラミングスクール13選!選び方も詳しく解説
#プログラミングスクール
2024.01.26
【徹底比較】名古屋のおすすめプログラミングスクール13選!選び方も詳しく解説
#プログラミングスクール
2024.01.26
【徹底比較】おすすめのプログラミングスクール18選!失敗しない選び方も徹底解説
#プログラミングスクール