この記事では Python で Web サイトや API からデータ取得をする時によく使われる request ライブラリを紹介します!
実際に API にリクエストして Pandas でデータ取得する例もご紹介します!
ゼロから始めるプログラミング
スモールステップで Python を基礎から学べる、初学者の方向けの講座です。演習問題を通して Python の使い方を理解し、データ分析や機械学習実装のための基礎を身につけることを目指します。
Python の requests ライブラリとは?
requests
は、Pythonで使うための追加のツール(ライブラリ)の1つです。これを使うと、Pythonからウェブサイトに情報を問い合わせたり(これを request と呼びます)、ウェブサイトからデータを収集したりすることができます。
たとえば、天気予報のウェブサイトから今日の天気を知りたいときや、映画のレビューサイトから評価を集めたいときなどに、このrequests
を使います。
具体的には、ウェブサイトに問い合わせをするためのメッセージ(これを HTTP リクエストと呼びます)を送るのに、requests
が使われます。また、特定のウェブサービス(これを API と呼びます)を Python から使うときや、ウェブページから情報を集める(これをウェブスクレイピングと呼びます)ときにも、requests
はとても重要なツールとなります。
このように、ウェブサイトからデータを取得したいときには、Python のrequests
ライブラリを使うと便利です。
ライブラリについて詳しくは以下の記事をご覧ください!
requests ライブラリのインストール方法
requests ライブラリは Python のパッケージ管理システムである pip を使って簡単にインストールできます。コマンドプロンプトやターミナルを開き、以下のコマンドを入力して実行します。
pip install requests
requests を用いた基本的な Web データ取得方法
requests ライブラリを用いてウェブサイトからデータを取得する基本的な方法は、以下のようなコードで実現できます。
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からデータを取得する基本的な方法を示します。
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 のライブラリ requests
と pandas
を使用して、Web からデータを取得し、そのデータを整形する方法を紹介します。
まず、requests
を使用して JSONPlaceholder という Web API からデータを取得しましょう。その後、取得したデータを pandas
のデータフレームに変換します。
import requests
import pandas as pd
response = requests.get("https://jsonplaceholder.typicode.com/posts")
data = response.json()
df = pd.DataFrame(data)
print(df.head())
実行結果は以下のようになります。
userId | id | title | body | |
0 | 1 | 1 | sunt aut facere… | quia et suscipit\nsuscipit… |
1 | 1 | 2 | qui est esse | est rerum tempore… |
2 | 1 | 3 | ea molestias… | et iusto sed quo iure\… |
次に、pandas
を使用して、各投稿の本文(’body’)の文字数を計算し、それを新たな列’body_length’としてデータフレームに追加します。
df['body_length'] = df['body'].apply(len)
print(df.head())
実行結果は以下のようになります。
userId | id | title | body | body_length | |
0 | 1 | 1 | sunt aut facere… | quia et suscipit\nsuscipit… | 158 |
1 | 1 | 2 | qui est esse | est rerum tempore… | 206 |
2 | 1 | 3 | ea molestias… | et iusto sed quo iure\… | 164 |
コードの解説
このコードでは、最初に requests.get()
を使用してWeb APIからデータを取得しています。その後、取得したJSONデータを .json()
メソッドでPythonのリスト・辞書に変換し、それを pd.DataFrame()
を用いてPandasのデータフレームに変換しています。
その後、データフレームの本文(’body’)の文字数を計算し、それを新たな列’body_length’としてデータフレームに追加しています。これにより、取得したデータをより詳細に分析することができます。
以上のように、requests
と pandas
を組み合わせることで、Webからのデータ取得とその後のデータ整形を効率よく行うことができます。
Python requests のまとめ
- Python の
requests
ライブラリはウェブサイトからデータを取得するためのツールで、ウェブスクレイピングや API を使ったデータ取得に用いられる - API はソフトウェア間でデータをやり取りするための「共通の言語」のようなもので、ウェブ API を利用するとウェブサービスの機能やデータをPython プログラムから直接利用することができる
requests
とpandas
を組み合わせて使うことで、ウェブサイトや API からデータを取得し、それを整形・分析する一連の流れをスムーズに行うことができる
ぜひこの記事を参考にしてウェブ上の情報を自由自在に扱えるようになりましょう!
まずは無料で学びたい方・最速で学びたい方へ
まずは無料で学びたい方: Python&機械学習入門コースがおすすめ
AI・機械学習を学び始めるならまずはここから!経産省の Web サイトでも紹介されているわかりやすいと評判の Python&機械学習入門コースが無料で受けられます!
さらにステップアップした脱ブラックボックスコースや、IT パスポートをはじめとした資格取得を目指すコースもなんと無料です!
最速で学びたい方:キカガクの長期コースがおすすめ
続々と転職・キャリアアップに成功中!受講生ファーストのサポートが人気のポイントです!
AI・機械学習・データサイエンスといえばキカガク!
非常に需要が高まっている最先端スキルを「今のうちに」習得しませんか?
無料説明会を週 2 開催しています。毎月受講生の定員がございますので確認はお早めに!
- 国も企業も育成に力を入れている先端 IT 人材とは
- キカガクの研修実績
- 長期コースでの学び方、できるようになること
- 料金・給付金について
- 質疑応答
ゼロから始めるプログラミング
スモールステップで Python を基礎から学べる、初学者の方向けの講座です。演習問題を通して Python の使い方を理解し、データ分析や機械学習実装のための基礎を身につけることを目指します。