Requestsって何ができるの。使い方を知りたい。
PythonによるWebスクレイピングでRequestsを利用したい方に向けて、Requestsでできることや使い方を解説しています。
具体的に次のことについて説明しています。
- Requestsとは
- Requestsの利用に必要な前提知識
- Requestsの使い方
「偉そうに語るおまえは誰やねん。」と思われるので、私のことも少し紹介させてください。
たいらーのプロフィール
- 文系四大出身。ソフトウェア開発の経験はなしですが、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メソッドとは、クライアントからサーバに対する要求の種類のことをいいます。
例えば、クライアントがサーバにWebページを要求する場合、Getメソッドというものを使います。
HTTPメソッドには、種類がいくつかあるので、代表的なものを紹介します。
HTTPメソッド | 説明 |
---|---|
Get | Webサーバに対してURLを指定して、ファイル送信を要求する。 |
Post | Webサーバに対して、リクエストメッセージボディに情報を付与して送信する。 |
Put | Webサーバにあるファイルの更新、新規作成を要求する。 |
Delete | Webサーバにあるファイルの削除を要求する。 |
HTTPメソッドを使ってWebサーバと情報をやり取りすることで、私たちが目にしているWebページがブラウザ上で見れているわけです。
ただ、Webスクレイピングにおいては、GetとPost以外はほとんど使う機会がありません。なので、少なくともGetとPostが理解できれば、ひとまず問題ありません。(個人的な感覚ですが。)
3.Requestsの使い方
ここまで、RequestsとHTTPリクエストの関係性を理解するために、HTTPについて解説してきました。
「RequestsってHTTPのリクエストと考え方は同じなんだなぁ。」思って頂けると理解しやすいかと思います。
実際にRequestsのメソッドを見てもらうと、より分かりやすいかと思いますので、一部メソッドを紹介します。
クライアントがWebサーバに対して、ファイルを要求(GET)する機能。
クライアントがWebサーバに対して、データを送信する機能。
クライアントがWebサーバに対して、ファイル更新する機能。
クライアントが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”というのは、「リクエストが成功して、情報を返したよ。」という状態です。
ステータスコードは他にもあるので、代表的なものを以下にまとめておきます。
ステータスコード | 意味 |
---|---|
200 | OK。リクエスト成功 |
201 | Created。リクエストが成功し、新たにリソース(ファイルなど)が作成された。 |
204 | No Content。リクエストは渡ったが、情報が更新されなかった。 |
301 | Moved Permanently。リソースの URL が恒久的に変更された。 |
401 | Unauthorized。クライアントが未承認。 |
404 | Not Found。リクエストしたリソースが見つからない。 |
501 | Not Implemented。サーバがリクエストメソッドに対応していない。(HTTPのバージョンが古い) |
503 | Service 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活用】スクレイピングとは?やり方・学習方法を解説』を用意しました。
スクレイピングは、仕事やプライベートに活用できるので、是非ご覧ください。
ご清聴ありがとうございました。