注目キーワード

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

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

こちらの記事では、以前urllibを利用してインターネット上のリソースにアクセスしたことを思い出し、最近より使われている高機能なライブラリである requests を使ったアクセス方法を紹介します。requestsは今回紹介するGETアクセスだけではなく、パラメータを渡すPOSTアクセスなどでも広く使われているため、一度使い方を確認するとよりいろんな場所で利用できるようになります。

インストール

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

requests get の基本的な使い方

これまでも何度か利用していますが、厚生労働省のオープンデータ を参考にして、pythonのプログラムからデータを取得してみます。

サンプルソース

サンプルの実装です。

  • URLにアクセスします(get)。
  • 得られた結果を変数に格納し、エンコードを確認します(ISO-8859-1)。
  • 日本語に対応するために、エンコードをUTF-8に指定し、確認します。
  • 最後にURLにアクセスして読み込んだ内容を出力します。

実行結果

実行結果になります。urllibを利用したときと比較して、よりスッキリとデータを読み込んで出力できました。

取得した内容とエンコーディングの設定の変化を確認した結果

requests getのエンコード設定をいい感じに行うサンプルソース

先程の例ではUTF-8を明示的に設定しましたが、いい感じに設定することも可能です。サンプルコードを見てみます。

実行結果

実行結果です。UTF-8と明示的に指定しなくても、いい感じに設定して出力ができました。文字コードはハマることが多いので、いろんな方法で試してみて下さい。

apparent_encodingによる設定の結果

requests getした結果をJSONで読み込む

以前、時間情報をJSONでパースするプログラムを書きました。そのときは読み込んだ文字列をjsonライブラリでパースしていましたが、requests を利用している場合には読み込んだ結果の型(Response型)からjson形式で簡単にデータを取得できます。サンプルで動作を確認してみます。

サンプルソース

サンプルの実装です。以前の実装よりもパースが簡単になっています。

スポンサーリンク

実行結果

実行結果です。うまく時間情報をURLへアクセスしてから取得し、JSON経由で辞書型のデータに変換した上で、出力できたことが分かります。

requests.getを利用してJSONをパースした時刻の取得結果

最初にも書いたとおり、requests はGET/POSTのアクセスのために広く利用されているライブラリです。一度いろんなインターネットアクセスに requests を利用してみてくださいね。