【Python】Requestsのインストール

【Python】Requestsのインストール プログラミング

「PythonでWebページへアクセスしたい」
このような場合、真っ先にRequestsが候補となります。

この記事では、Requestsについて解説しています。
そして、Requestsの限界についても触れています。

本記事の内容

  • Requestsとは?
  • Requestsのシステム要件
  • Requestsのインストール
  • Requestsの動作確認

それでは、上記に沿って解説していきます。

Requestsとは?

Requests: 人間のためのHTTP
https://requests-docs-ja.readthedocs.io/en/latest/

Requestsとは、PythonのHTTPライブラリのことです。
Requestsにより、PythonからWebページにアクセスが可能となります。

Webアクセスという基本機能のため、多くのライブラリでも利用されています。
そして、依存するパッケージとして同時にインストールされます。

そのため、知らず知らずのうちにRequestsをインストールしているかもしれません。
それぐらい、RequestsはPython界で重要なライブラリだと言えます。

以上、Requestsについての説明でした。
次は、Requestsのシステム要件を確認します。

Requestsのシステム要件

現時点(2021年9月末)でのRequestsの最新バージョンは、2.26.0となります。
この最新バージョンは、2021年7月13日にリリースされています。

サポートOSに関しては、以下を含むクロスプラットフォーム対応のはずです。

  • Windows
  • macOS
  • Linux

公式ページなどには、クロスプラットフォームは明示していません。
一般的にサポートOSの明示がない場合は、クロスプラットフォーム対応です。

「わざわざ言う必要もないだろう」という感じなのでしょうかね。
実際、WindowsとLinux(Ubuntu)での動作は確認済です。

あとは、サポート対象となるPythonのバージョンは以下となります。

  • Python 2.7
  • Python 3.5
  • Python 3.6
  • Python 3.7
  • Python 3.8
  • Python 3.9

もう、古いPythonは切り捨ててもいいと思います。
以下のPythonの公式開発サイクルに従えば、それで十分です。

バージョンリリース日サポート期限
3.62016年12月23日2021年12月
3.72018年6月27日2023年6月
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月

その意味では、Requestsの開発者が頑張り過ぎと言えます。
互換性維持の労力は、なんだかんだで手間になります。
その分だけの労力を機能改善に注いだ方が、みんな幸せになれるはずです。

以上より、Requestsのシステム要件はほぼないと言えます。
次は、Requestsをインストールしていきます。

Requestsのインストール

まずは、現状のインストール済みパッケージを確認しておきます。

>pip list 
Package    Version 
---------- ------- 
pip        21.2.4 
setuptools 58.1.0

次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

python -m pip install --upgrade pip setuptools

では、Requestsのインストールです。
Requestsのインストールは、以下のコマンドとなります。

pip install requests

インストールは、すぐに終わります。
では、どんなパッケージがインストールされたのかを確認しましょう。

>pip list 
Package            Version 
------------------ --------- 
certifi            2021.5.30 
charset-normalizer 2.0.6 
idna               3.2 
pip                21.2.4 
requests           2.26.0 
setuptools         58.1.0 
urllib3            1.26.7

依存するパッケージも、requestsと一緒にインストールされました。
それらを見る限り、既存環境へ比較的容易にRequestsを導入できそうです。

以上、Requestsのインストールを説明しました。
最後は、Requestsの動作確認を行います。

Requestsの動作確認

Requestsの動作確認では、次の二つを取得します。

  • 対象ページのレスポンス(htmlソース)
  • 対象ページのレスポンスヘッダー

それぞれを以下で確認します。

対象ページのレスポンス(htmlソース)

import requests 
r = requests.get('https://example.com/') 
print(r.text)

上記を実行した結果は、以下。

<!doctype html> 
<html> 
<head> 
    <title>Example Domain</title> 
    <meta charset="utf-8" /> 
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 
    <meta name="viewport" content="width=device-width, initial-scale=1" /> 
    <style type="text/css"> 
    body { 
        background-color: #f0f0f2; 
        margin: 0; 
        padding: 0; 
        font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; 
         
    } 
    div { 
        width: 600px; 
        margin: 5em auto; 
        padding: 2em; 
        background-color: #fdfdff; 
        border-radius: 0.5em; 
        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02); 
    } 
    a:link, a:visited { 
        color: #38488f; 
        text-decoration: none; 
    } 
    @media (max-width: 700px) { 
        div { 
            margin: 0 auto; 
            width: auto; 
        } 
    } 
    </style>     
</head> 
<body> 
<div> 
    <h1>Example Domain</h1> 
    <p>This domain is for use in illustrative examples in documents. You may use this 
    domain in literature without prior coordination or asking for permission.</p> 
    <p><a href="https://www.iana.org/domains/example">More information...</a></p> 
</div> 
</body> 
</html>

このようにhtmlソースを丸ごと取得できます。
そのため、Requestsはスクレイピングで利用されることがあります。

ただし、Requestsは静的ページのスクレイピングでしか有効ではありません。
Ajaxを用いた動的ページとなると、途端に使いモノにならなくあります。
この点を注意して、Requestsを利用しましょう。

対象ページのレスポンスヘッダー

import requests 
r = requests.get('https://example.com/') 

headers = r.headers 
for data in headers: 
     print(data + ":" + headers[data])

上記を実行した結果は、以下。

Content-Encoding:gzip 
Age:411716 
Cache-Control:max-age=604800 
Content-Type:text/html; charset=UTF-8 
Date:Thu, 23 Sep 2021 00:03:59 GMT 
Etag:"3147526947+gzip" 
Expires:Thu, 30 Sep 2021 00:03:59 GMT 
Last-Modified:Thu, 17 Oct 2019 07:18:26 GMT 
Server:ECS (sab/56BC) 
Vary:Accept-Encoding 
X-Cache:HIT 
Content-Length:648

まとめ

上記からわかるように、簡単にウェブページの情報を取得できます。
ただし、ページによっては上記のコードが動かない場合があります。

一概には言えませんが、いろいろとチェックするページが存在します。
チェックの内容は、ボットかどうかをチェックすることが多いです。

そのようなチェックをされた場合、ボットの判定を受けてしまいます。
そうなったら、上記のコードが機能しません。

これが、Requestsの限界と言えますね。
限界には、動的ページに対応できないことも含まれます。

ただし、その回避方法は存在します。
Seleniumを利用すれば、基本的にはボットの判定は受けません。
Seleniumについては、次の記事で解説しています。

タイトルとURLをコピーしました