注目キーワード

【Python】requests postを使ってインターネット上のページにアクセスする

Pythonには様々な種類のデータを扱うライブラリが揃っており、これまでもいろんなライブラリを紹介してきました。

こちらの記事では、前回紹介したrequestsというライブラリを用いて、GETではなくPOSTアクセスする方法と動作確認について説明したいと思います。前回の記事もあわせて見て頂くと、分かりやすいかもしれません。

インストール

ライブラリをインストールするために、pip install requests を実行しておきます。

requests post の基本的な使い方

インターネットアクセスにはいくつか種類があり、GET方式とPOST方式がよく使われています。一般にはGET方式は情報を取得するため、POST方式は情報を更新するため、と言われることもありますね。GET方式ではURLの後ろにパラメータをつけて送りますが、このとき送信するデータがURL上に全て記録されてしまいますし、長いデータを送ることができません。POST方式ではパラメータをURLにつけず送信を行います。早速動作を確認してみましょう。

テスト環境の準備

サーバーにデータを送信するわけですが、動作確認にサーバーを自分で用意するのは大変なので、インターネット上のテスト用サーバーの「Post Test Server V2」を利用したいと思います。アクセスして「New Random Toilet」のボタンを押して、適当にPOSTを投げることができる先を作成します。

作成してみた例がこちらです。POST方式のアクセスに利用できるURLと作った日付が書かれています。

テスト用サーバー

サンプルソース

上で作った先にサンプルでPOST方式でアクセスしてみましょう。

  • 最初にライブラリを読み込みます。
  • URLにアクセスします(postです)。
  • アクセスする際にデータとして、pythonの辞書型のデータを与えてみます。
  • 与える方式として、そのまま辞書を与えるタイプと、jsonライブラリを利用して文字列にしてから与える方式の両方を動作確認します。

実行結果

実行した後に、先ほど作成した投稿先のページにアクセスします。

テスト用サーバーのアクセスログの例

すると2回のアクセスが記録されていることが分かりますね。それぞれの違いは

  • ヘッダーの長さ(12 vs 11)
  • パラメータの個数(1 vs 0)
  • ボディの長さ(0 vs 16)

となっています。それぞれのアクセスログをviewを押して表示してみます。まずは1回目のアクセスです。

1回目のアクセスログ

次に2回目のアクセスログです。

スポンサーリンク

2回目のアクセスログ

このように2回目のアクセスでは、POST方式でアクセスしたリクエストのボディ部に、JSON文字列が格納されていることが分かります。このようにしてPOST方式ではGET方式と比べて、更に複雑なデータを投稿することができます。

実際にどのようにデータを渡すのかは、POST方式でアクセスする先に依存してきます。その場合でも、データの渡し方やPOST方式アクセスの基本的な方式・考え方は同じなので、是非POST方式でアクセスする際にはpythonのrequestsを使ってみてくださいね。