Python requests ライブラリについてわかりやすく解説!Web のデータを自由自在に扱おう!

Python requests ライブラリについてわかりやすく解説!Web のデータを自由自在に扱おう!

この記事では Python で Web サイトや API からデータ取得をする時によく使われる request ライブラリを紹介します!
実際に API にリクエストして Pandas でデータ取得する例もご紹介します!

Python の requests ライブラリとは?

requestsは、Pythonで使うための追加のツール(ライブラリ)の1つです。これを使うと、Pythonからウェブサイトに情報を問い合わせたり(これを request と呼びます)、ウェブサイトからデータを収集したりすることができます。

たとえば、天気予報のウェブサイトから今日の天気を知りたいときや、映画のレビューサイトから評価を集めたいときなどに、このrequestsを使います。

具体的には、ウェブサイトに問い合わせをするためのメッセージ(これを HTTP リクエストと呼びます)を送るのに、requestsが使われます。また、特定のウェブサービス(これを API と呼びます)を Python から使うときや、ウェブページから情報を集める(これをウェブスクレイピングと呼びます)ときにも、requestsはとても重要なツールとなります。

このように、ウェブサイトからデータを取得したいときには、Python のrequestsライブラリを使うと便利です。

ライブラリについて詳しくは以下の記事をご覧ください!

requests ライブラリのインストール方法

requests ライブラリは Python のパッケージ管理システムである pip を使って簡単にインストールできます。コマンドプロンプトやターミナルを開き、以下のコマンドを入力して実行します。

requests ライブラリのインストール
pip install requests

requests を用いた基本的な Web データ取得方法

requests ライブラリを用いてウェブサイトからデータを取得する基本的な方法は、以下のようなコードで実現できます。

requests ライブラリでの Web データ取得方法
import requests

url = "http://example.com"
response = requests.get(url)

print(response.text)

上記のコードではまず、requests.get 関数を使って指定した URL からデータを取得しています。取得したデータはresponse オブジェクトに格納され、その text 属性を print 関数で表示しています。

requests ライブラリで API からデータ取得

API とは?

API(Application Programming Interface)とは、コンピュータプログラム同士がお互いに話すための「共通の言語」のようなものです。これを使うと、異なるソフトウェアやサービスが互いにデータをやり取りしたり、機能を共有したりすることができます。

ウェブ API というのは、特にウェブサービスが他のプログラムに対して自分の機能やデータを提供するために使われます。たとえば、天気予報サービスのウェブ API を使えば、あなたのプログラムからそのサービスに直接今日の天気を尋ねることができます。

このとき通信の方法としてよく使われるのが HTTP というプロトコル(つまり、通信のルールの一種)です。そして、ウェブ API がプログラムに対してデータを送り返すときには、よく使われる形式として JSON や XML というものがあります。

このように、API はソフトウェア同士がデータを共有したり、機能を提供したりするための重要なツールです。

requests を用いた API からのデータ取得方法

以下に、requests ライブラリを使ってAPIからデータを取得する基本的な方法を示します。

requests を用いた API からのデータ取得
import requests

url = "http://api.example.com/data"
response = requests.get(url)

data = response.json()
print(data)

上記のコードでは、requests.get関数を使って API からデータを取得し、取得したデータを json メソッドを使って Python の辞書オブジェクトに変換しています。

requests と Pandas を用いたデータ取得・整形

具体的なステップ

このセクションでは、Python のライブラリ requestspandas を使用して、Web からデータを取得し、そのデータを整形する方法を紹介します。

まず、requests を使用して JSONPlaceholder という Web API からデータを取得しましょう。その後、取得したデータを pandas のデータフレームに変換します。

JSONPlaceholder からデータを取得
import requests
import pandas as pd

response = requests.get("https://jsonplaceholder.typicode.com/posts")
data = response.json()
df = pd.DataFrame(data)

print(df.head())

実行結果は以下のようになります。

userIdidtitlebody
011sunt aut facere…quia et suscipit\nsuscipit…
112qui est esse est rerum tempore…
213ea molestias…et iusto sed quo iure\…

次に、pandas を使用して、各投稿の本文(’body’)の文字数を計算し、それを新たな列’body_length’としてデータフレームに追加します。

pandas を利用してデータ整形
df['body_length'] = df['body'].apply(len)

print(df.head())

実行結果は以下のようになります。

userIdidtitlebodybody_length
011sunt aut facere…quia et suscipit\nsuscipit…158
112qui est esse est rerum tempore…206
213ea molestias…et iusto sed quo iure\…164

コードの解説

このコードでは、最初に requests.get() を使用してWeb APIからデータを取得しています。その後、取得したJSONデータを .json() メソッドでPythonのリスト・辞書に変換し、それを pd.DataFrame() を用いてPandasのデータフレームに変換しています。

その後、データフレームの本文(’body’)の文字数を計算し、それを新たな列’body_length’としてデータフレームに追加しています。これにより、取得したデータをより詳細に分析することができます。

以上のように、requestspandas を組み合わせることで、Webからのデータ取得とその後のデータ整形を効率よく行うことができます。

Python requests のまとめ

  • Python のrequestsライブラリはウェブサイトからデータを取得するためのツールで、ウェブスクレイピングや API を使ったデータ取得に用いられる
  • API はソフトウェア間でデータをやり取りするための「共通の言語」のようなもので、ウェブ API を利用するとウェブサービスの機能やデータをPython プログラムから直接利用することができる
  • requestspandasを組み合わせて使うことで、ウェブサイトや API からデータを取得し、それを整形・分析する一連の流れをスムーズに行うことができる

ぜひこの記事を参考にしてウェブ上の情報を自由自在に扱えるようになりましょう!

こちらの記事もオススメ

まずは無料で学びたい方・最速で学びたい方へ

まずは無料で学びたい方: Python&機械学習入門コースがおすすめ

Python&機械学習入門コース

AI・機械学習を学び始めるならまずはここから!経産省の Web サイトでも紹介されているわかりやすいと評判の Python&機械学習入門コースが無料で受けられます!
さらにステップアップした脱ブラックボックスコースや、IT パスポートをはじめとした資格取得を目指すコースもなんと無料です!

無料で学ぶ

最速で学びたい方:キカガクの長期コースがおすすめ

一生学び放題

続々と転職・キャリアアップに成功中!受講生ファーストのサポートが人気のポイントです!

AI・機械学習・データサイエンスといえばキカガク!
非常に需要が高まっている最先端スキルを「今のうちに」習得しませんか?

無料説明会を週 2 開催しています。毎月受講生の定員がございますので確認はお早めに!

説明会ではこんなことをお話します!
  • 国も企業も育成に力を入れている先端 IT 人材とは
  • キカガクの研修実績
  • 長期コースでの学び方、できるようになること
  • 料金・給付金について
  • 質疑応答