- Pythonリクエストとは何ですか?
- Pythonリクエストを使用する理由
- Pythonリクエストをインストールするにはどうすればいいですか?
- Get&Postリクエストの作成
- URLでパラメータを渡す
- ステータスコード
- 応答内容
- マルチパートファイルのアップロード
- クッキーとヘッダー
- セッションオブジェクト
- エラーと例外
Pythonリクエストとは何ですか?
Pythonリクエストは、Kenneth Reitzによって作成され、apache2.0でライセンスされています。公式ドキュメントページに記載されているように、これは人間に優しいHTTPライブラリです。使い方は簡単で、基本的にあらゆる種類のHTTPリクエストを作成するために使用されます。以下は、リクエストに付属するいくつかの高度な機能です。- キープアライブと接続プール
- 国際ドメインとURL
- Cookieの永続性を備えたセッション
- ブラウザスタイルのSSL検証
- 自動コンテンツデコード
- 基本/ダイジェスト認証
- エレガントなキー/値Cookie
- 自動減圧
- Unicode応答本文
- HTTPプロキシのサポート
- マルチパートファイルのアップロード
- ストリーミングダウンロード
- 接続タイムアウト
- チャンクリクエスト
Pythonリクエストを使用する理由
なぜPythonリクエストを使用するのですか?理由は非常に単純です。 Pythonリクエストを使用している間、手動でクエリをURLに追加したり、投稿データをフォームエンコードしたりする必要はありません。あらゆる種類のhttpリクエストを行うときに、作業が簡単になります。Pythonリクエストと、Pythonでそれらを使用する理由を理解したところで、プロジェクトまたはシステムにリクエストをインストールする方法を理解してみましょう。Pythonリクエストをインストールするにはどうすればいいですか?
取り付け部分もとても簡単です。システムにpipenvセットアップがインストールされている場合は、ターミナルで次のコマンドを実行するだけです。$ pipインストールリクエスト
これにより、リクエストライブラリがシステムにインストールされます。リクエストをインストールする方法がもう1つあります。 pycharmを使用している場合は、設定でプロジェクトインタープリターにリクエストを追加できます。これは、プロジェクトにライブラリをインストールする場合のターミナルと同じ目的を果たします。インストールが完了したので、Pythonでgetおよびpostリクエストを作成する方法を理解してみましょう。Get&Postリクエストを行う方法は?
Getリクエストは、基本的にサーバーからのデータをリクエストするために使用されます。以下は、getリクエストを作成するための構文です。インポートリクエストres = requests.get( 'url')#resはここでの応答オブジェクトです。ポストリクエストは、処理するデータをサーバーに送信するために使用されます。以下は、POSTリクエストを行うための構文です。
インポートリクエストペイロード= {'key1': 'value1'} res = requests.post( 'url'、data =ペイロード)getリクエストとpostリクエストを作成する方法がわかったので、getリクエストを使用してパラメータをURLに渡す方法を見てみましょう。
URLでパラメータを渡す
URLでパラメーターを渡すのは、getリクエストを作成するのと同じくらい簡単です。以下は、パラメーターをurlに渡す例です。importrequestsペイロード= {'key1': 'value1'、 'key2': 'value2'} res = requests.get( 'url'、params =ペイロード)print(res.url)#これは、パラメータを含むURLを出力しますgetリクエストを通過しました。
ステータスコード
ステータスコードも確認できます。ステータスコードを確認するコードは次のとおりです。
インポートリクエストres = requests.get( 'url')print(res.status_code())コードが200を返す場合は、エラーがなく、リクエストがすべて正常であることを意味します。不正なリクエストを行うと、コードは404や505のようなコードを返し、httpエラーが発生します。
応答内容
サーバーの応答の内容を読み取ることもできます。ライブラリは、サーバーからのコンテンツを自動的にデコードします。インポートリクエストres = requests.get( 'url')print(res.content)
Requestsにはjsonデコーダーも組み込まれています。
リクエストのインポートres = requests.get( 'url')print(res.json())#これはjson形式で応答を取得します
マルチパートファイルのアップロード
リクエストを使用してマルチパートファイルをアップロードするのは非常に簡単です。インポートリクエストファイル= {'ファイル':open( 'ファイル名'、 'rb')} res =リクエスト.post( 'url'、ファイル=ファイル)print(res.text)複数のファイルを送信する場合は、filesパラメーターで複数のファイルを指定します。
クッキーとヘッダー
応答オブジェクトを使用して、サーバーの応答ヘッダーとCookieを表示できます。以下は、サーバーのヘッダーを表示するためのコードです。インポートリクエストres = requests.get( 'url')print(res.headers)カスタムヘッダーをURLに渡すこともできます。コードを見てみましょう。
インポートリクエストheaders = {'key1': 'value1'} res = requests.get( 'url'、headers = headers)print(res.headers)リクエストは、カスタムヘッダーに基づいてその動作を変更しません。それらは単に最終リクエストに渡されます。 クッキー 応答オブジェクトを使用して表示することもできます。
リクエストのインポート#独自のCookieを渡すには、Cookieパラメータを使用できますcookies = dict(cookies = 'working')res = requests.get( 'url'、cookies = cookies)print(res.text)
CookieはRequestCookieJarで返されます。これは辞書のように機能しますが、複数のドメインまたはパスでの使用に適した、より完全なインターフェイスも提供します。
セッションオブジェクト
セッションオブジェクトを使用すると、リクエスト間で特定のパラメータを永続化できます。- セッションインスタンスから行われたすべてのリクエストにわたってCookieを保持します
- urllib3接続プールを使用する
- パフォーマンスが大幅に向上
- セッションオブジェクトには、メインリクエストAPIのすべてのメソッドがあります
s = requests.session()s.get( 'url')res = s.get( 'url')print(res.text)
エラーと例外
以下は、Pythonリクエストで発生するエラーと例外です。- ネットワークに問題が発生した場合、リクエストによってConnectionError例外が発生します。
- Response.raise_for_status()は、失敗したステータスコードがある場合にHTTPエラーを発生させます。
- タイムアウトがあると、タイムアウト例外が発生します
- リクエストが設定されたリダイレクトの最大数を超えると、TooManyRedirects例外が発生します。