Python初心者のためのRequests入門

ノートパソコン(薄黄)Python
スポンサーリンク
スポンサーリンク

Requestsって何ができるの。使い方を知りたい。

PythonによるWebスクレイピングでRequestsを利用したい方に向けて、Requestsでできることや使い方を解説しています。

具体的に次のことについて説明しています。

  • Requestsとは
  • Requestsの利用に必要な前提知識
  • Requestsの使い方

 

「偉そうに語るおまえは誰やねん。」と思われるので、私のことも少し。

私のプログラミング歴は約5年で、本職での開発経験はありませんが、一応、IT業界に身を置いています。

今でもPythonなど、独学でプログラミングを勉強しつつ、そのスキルを活かして仕事の効率化を図ったり、ゲームをつくったりしています。

この記事では、Requestsの利用に必要なHTTPの知識やRequestsの基礎知識を分かりやすく解説しています。

Requestsの理解を深め、ご自身のWebスクレイピングにお役立てください。

 

 

1.Requestsとは

Requestsとは、PythonのHTTP通信用ライブラリです。

Webスクレイピングでは、Webページの取得に使われます。

同じ機能を持つurllib2 モジュールよりも、シンプルで扱いやすいライブラリです。

 

・Requestsでできること

Webスクレイピングは、基本的に「Webページのダウンロード」、「データの抽出」、「データの整形・保存」の順におこなわれます。

Requestsは、HTTPのリクエストに対応した機能を持っており、この機能を使うことでWebページのダウンロードを行います。

Webスクレイピングで使用する、各ライブラリの役割をまとめた表が以下です。

ライブラリWebデータの取得データの抽出データの整形・保存
Requests××
Beautiful Soup××
Pandas××
Selenium×
Scrapy

 

2.Requestsの利用に必要な前提知識

HTTPのリクエストに対応した機能を持っているRequestsを理解するためには、前提となるHTTPについて知る必要があります。

ここでは次の2点を簡単に説明します。

  • HTTPとは
  • HTTPがやっていること

 

・HTTPとは

HTTPの正式名称はHypertext Transfer Protocolといい、WebブラウザがWebサーバと通信するための通信プロトコルです。

プロトコルとは手順や約束事のことです。

Webブラウザのようなクライアントが、Webサーバに対して情報提供を要求し、Webサーバが情報をクライアントに送信する。この一連のやりとりにHTTPが使われています。

WebサイトのURLに表示されている“http”は、「このサイトはhttpを使って通信してますよ。」ということを明記しているわけです。

 

ちなみに”https”は、正式名称がHypertext Transfer Protocol  Secureといい、HTTPよりも安全に通信をおこなうことができるプロトコルです。

通信内容を暗号化してやり取りし、第三者による盗み見や書き換えを防ぎます。

HTTPSは、HTTPの安全対策版との解釈でOKで、どちらもインターネットの通信プロトコルと理解しておきましょう。

 

・HTTPがやってること

では、HTTPがやってることをざっくり説明します。

Webブラウザがサーバに要求を送るときには、以下の3つの情報を渡しています。

HTTPの構成物概要
リクエストラインHTTPメソッド、Web上の住所と名前、HTTPバージョンを記載。
リクエストヘッダーサーバーへの要求あれこれ。使用しているクライアントの情報や、やってほしいことを記載。
リクエストメッセージボディ補足情報などを記載。HTTPのメソッドによって記載内容が異なる。

 

これら3つをひとまとめにして、サーバに要求として渡しています。

渡している内容は、HTTPメソッドによって違います。

 

HTTPメソッドって何?
HTTPメソッドとは、クライアントからサーバに対する要求の種類のことをいいます。
例えば、クライアントがサーバにWebページを要求する場合、Getメソッドというものを使います。

 

HTTPメソッドには、種類がいくつかあるので、代表的なものを紹介します。

HTTPメソッド説明
GetWebサーバに対してURLを指定して、ファイル送信を要求する。
PostWebサーバに対して、リクエストメッセージボディに情報を付与して送信する。
PutWebサーバにあるファイルの更新、新規作成を要求する。
DeleteWebサーバにあるファイルの削除を要求する。

 

HTTPメソッドを使ってWebサーバと情報をやり取りすることで、私たちが目にしているWebページがブラウザ上で見れているわけです。

 

ただ、Webスクレイピングにおいては、GetとPost以外はほとんど使う機会がありません。なので、少なくともGetとPostが理解できれば、ひとまず問題ありません。(個人的な感覚ですが。)

 

3.Requestsの使い方

ここまで、RequestsとHTTPリクエストの関係性を理解するために、HTTPについて解説してきました。

「RequestsってHTTPのリクエストと考え方は同じなんだなぁ。」思って頂けると理解しやすいかと思います。

実際にRequestsのメソッドを見てもらうと、より分かりやすいかと思いますので、一部メソッドを紹介します。

・○○.get(url)
クライアントがWebサーバに対して、ファイルを要求(GET)する機能。

 

・○○.post(url)
クライアントがWebサーバに対して、データを送信する機能。

 

・○○.put(url)
クライアントがWebサーバに対して、ファイル更新する機能。

 

・○○.delete(url)
クライアントがWebサーバに対して、ファイル削除する機能。

 

Requestsがやってることがイメージできたでしょうか。

 

“url”には、対象となるWebサーバのURLを記述します。

実行すると”200”とかの数字が返ってきますが、この数字は、Webサーバのステータス(状態)を教えてくれています。

正確にはこの数字のことをステータスコードといいます。

 

実際にRequestsのGetメソッドを使ってやってみます。

import requests as r
url = 'https://umano-ie.com/racesample/'

sample = r.get(url)
print(sample)

#実行結果
Response [200]

 

レスポンスのステータスコードが”200”というのは、「リクエストが成功して、情報を返したよ。」という状態です。

ステータスコードは他にもあるので、代表的なものを以下にまとめておきます。

ステータスコード意味
200OK。リクエスト成功
201Created。リクエストが成功し、新たにリソース(ファイルなど)が作成された。
204No Content。リクエストは渡ったが、情報が更新されなかった。
301Moved Permanently。リソースの URL が恒久的に変更された。
401Unauthorized。クライアントが未承認。
404Not Found。リクエストしたリソースが見つからない。
501Not Implemented。サーバがリクエストメソッドに対応していない。(HTTPのバージョンが古い)
503Service Unavailable。サーバが(ダウンしているなどで)処理できない。

 

疎通確認ではこれらのステータスは役に立ちますが、Webスクレイピングにおいては取得したデータのほうが、正直気になりますよね。

そんなときは、text属性を使います。

text属性は、例えばGetメソッドで取得したデータをテキストデータとして取得することができます。

 

コードは以下のように記述します。(実行結果は、長くなるので割愛します。)

import requests as r

url = 'https://umano-ie.com/racesample/'
sample = r.get(url)

print(sample.text) #テキストデータとして取得

 

確認していただけると分かると思いますが、ずらっとテキスト形式でWebページの内容が表示されていると思います。

WebスクレイピングではText属性をうまく使ってデータを取得&加工します。

 

以上がWebスクレイピングにおけるRequestsの使い方です。

 

4.まとめ

以上、Requestsの基礎的な知識から使い方まで解説しました。

HTTPの知識を理解し、GetメソッドとText属性を押さえておくだけでも、十分Webスクレイピングができます。

それでもRequests以外にも、PandasやBeautifulSoup4など、Webスクレイピングに必要なライブラリはたくさんあります。

 

「もっとWebスクレイピングの知識を深めたい!」という方に向けて、スクレイピングについての知識や学習方法などをまとめた『【仕事でPython活用】スクレイピングとは?やり方・学習方法を解説』を用意しました。

スクレイピングは、仕事やプライベートに活用できるので、是非ご覧ください。

【仕事でPython活用】スクレイピングとは?やり方・学習方法を解説
仕事のデータ分析に役立つWebスクレイピングを解説しています。Pythonによるスクレイピングのやり方や学習方法を初心者目線で説明しているので、今からスクレイピングを始める方は必読です。

ご清聴ありがとうございました。