前回の記事では、ChatGPTを使いながらPythonでのスクレイピングを実践し、練習用サイトからデータを取得し簡単な分析を行いました。まだご覧になっていない方は、ぜひこちらの記事をご覧ください:【プログラミング】ChatGPTと進める!Pythonスクレイピング実践編。
今回は、その学びをさらに深めるために、スクレイピングに欠かせない「API(Application Programming Interface)」について学習していきます。APIとは、プログラム同士がデータをやり取りするための共通ルールのこと。これを理解することで、より効率的にデータ収集ができ、あなたのプログラミングスキルを一段階アップさせることができます。さあ、ChatGPTと一緒にAPIの世界へ足を踏み入れましょう!
Pythonの始め方についてはこちらの記事を参考にしてみてください!!
参考記事
ブログ内のコードはコピーして使用できます
APIとは何か?
APIは「Application Programming Interface」の略です。簡単に言うと、APIはコンピュータプログラム同士が話すためのルールです。
APIをカフェでの注文に例えてみましょう
- あなた(ユーザー): レストランのお客さん
- キッチン(サービス): 食べ物を作る場所
- ウェイター(API): あなたとキッチンをつなぐ人
レストランで食事を注文する時、あなたはウェイターに「パスタをください」と伝えます。ウェイターはそのメッセージをキッチンに伝え、キッチンでパスタが作られます。パスタができたら、ウェイターはそれをあなたに届けます。
APIはこの「ウェイター」のような役割を果たします。
- あなた(プログラム)はAPIを通じて他のプログラム(サービス)に何かをお願いしたり、情報を取り出したりします。
- APIはそのお願いを受け取って、必要な情報を持ってきたり、指示を実行したりします。
実際のAPIの例
インターネット上では、多くのウェブサービスがAPIを提供しています。
- 天気予報サービス: あなたが「明日の東京の天気を教えて」とリクエストすると、APIは天気予報の情報を持ってきてくれます。
- 地図サービス: あなたが「新宿から渋谷までの道順を教えて」とリクエストすると、APIは最適なルートを返してくれます。
APIがあると便利な理由
- 簡単にデータを取得できる: 自分で全てのデータを探し出す必要がなく、APIを通じて必要な情報を簡単に取得できます。
- 機能を利用できる: 他のプログラムが提供している機能を自分のプログラムから使えるようになります。
- 柔軟性がある: 様々なサービスや機能を簡単に組み合わせることができます。
ステップ1: APIの基本的な使い方
まずは、基本的なAPIリクエストの流れを学びましょう。今回は、Free Weather APIを使用して、特定の都市の天気データを取得する例を進めていきます。
1. APIキーの取得
- APIの多くは、認証のためにAPIキーを必要とします。今回はFree Weather APIを使いますが、まずはアカウントを作成し、APIキーを取得してください。
2. APIリクエストの基本構造
APIリクエストは通常、以下のような構造を持ちます:
1 |
https://api.service.com/data?param1=value1¶m2=value2&apikey=your_api_key |
- サービスのURL:
https://api.service.com
- エンドポイント:
/data
- パラメータ:
param1=value1¶m2=value2
- APIキー:
apikey=your_api_key
広告募集中
ステップ2: PythonでAPIを使用してデータを取得する
今回は使用するサイト
この天気予報APIを使用していきます。
有料プランもありますが、現在(2024.8.16)は無料で使用できるのでこのサイトを利用していきます。
APIの練習をするのであれば、このサイトのAPIで十分いろんなことができますよ
ステップ1: Free Weather APIキーの取得
- Free Weather APIにサインアップ:
- Free Weather APIのウェブサイトにアクセスし、アカウントを作成します。
- サインアップ後、ダッシュボードでAPIキーを取得します。
- APIドキュメントの確認:
- Free Weather APIのドキュメントを参照して、使用できるエンドポイントやパラメータを確認します。例えば、都市ごとの天気情報を取得するエンドポイントなど。
ステップ2:実際にデータを取得してみよう
具体例: Free Weather API を使って天気データを取得
以下のコードを使用して、特定の都市(例えば、Tokyo)の天気データを取得します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import requests # Free Weather APIのAPIキーを設定 api_key = 'your_api_key_here' # ここに取得したAPIキーを入力してください # リクエストURLを構築 city = 'Tokyo' url = f'http://api.weatherapi.com/v1/current.json?key={api_key}&q={city}&aqi=no' # APIにリクエストを送信 response = requests.get(url) # レスポンスをJSON形式で取得 data = response.json() # 天気データを表示 if response.status_code == 200: print(f"都市: {data['location']['name']}") print(f"天気: {data['current']['condition']['text']}") print(f"気温: {data['current']['temp_c']}°C") else: print(f"エラーが発生しました: {data.get('error', {}).get('message', 'Unknown error')}") |
出力
1 2 3 |
都市: Tokyo 天気: Partly cloudy 気温: 27.0°C |
city変数を東京以外に変えても、問題なく天気予報が出力されます。
Tokyo→Hiroshima-Shiに変更して出力してみます。
1 2 3 |
都市: Hiroshima-Shi 天気: Clear 気温: 23.5°C |
無事に出力されました。
ステップ3: 複数都市のデータ取得とフィルタリング
目標
複数の都市の天気データをAPIを使って取得し、そのデータをフィルタリングして、特定の条件に合致するデータを抽出する方法を学びます。
手順
- 複数都市の天気データを取得:
- 複数の都市(例: Tokyo, London, New York)の天気データをAPIを使って取得します。
- データのフィルタリング:
- 取得したデータから特定の条件(例: 気温が20°C以上)に合致するデータを抽出します。
- データの分析:
- フィルタリングされたデータを基に、平均気温を計算したり、都市の数を集計します。
具体的なコード例
以下のコードでは、複数の都市の天気データを取得し、気温が20°C以上の都市のみをフィルタリングする例を示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
import requests # Free Weather APIのAPIキーを設定 api_key = 'your_api_key_here' # ここに取得したAPIキーを入力してください # 複数の都市のリスト cities = ['Tokyo', 'London', 'New York', 'Paris', 'Sydney'] # 各都市の天気データを取得 weather_data = [] for city in cities: url = f'http://api.weatherapi.com/v1/current.json?key={api_key}&q={city}&aqi=no' response = requests.get(url) data = response.json() if response.status_code == 200: weather_data.append({ 'city': city, 'temp': data['current']['temp_c'] }) # 気温が20°C以上の都市をフィルタリング filtered_data = [entry for entry in weather_data if entry['temp'] >= 20] # フィルタリング結果の表示 for entry in filtered_data: print(f"都市: {entry['city']}, 気温: {entry['temp']}°C") # フィルタリングした都市の平均気温を計算 if filtered_data: avg_temp = sum([entry['temp'] for entry in filtered_data]) / len(filtered_data) print(f"\n気温が20°C以上の都市の平均気温: {avg_temp}°C") else: print("気温が20°C以上の都市はありませんでした。") |
広告募集中
出力
1 2 3 4 |
都市: Tokyo, 気温: 27.0°C 都市: New York, 気温: 25.1°C 気温が20°C以上の都市の平均気温: 26.05°C |
cities = ['Tokyo', 'London', 'New York', 'Paris', 'Sydney']
リスト内には、東京とニューヨークしか出てきませんでした。
その他の地域の気温が気になるので、数値を変更してみます。
1 2 |
# 気温が20°C以上の都市をフィルタリング filtered_data = [entry for entry in weather_data if entry['temp'] >= 20] |
このコードの20という数値を変更してみて、出力の変化を見ていきます
20→0に変更してみます
再出力
1 2 3 4 5 |
都市: Tokyo, 気温: 27.1°C 都市: London, 気温: 18.1°C 都市: New York, 気温: 25.0°C 都市: Paris, 気温: 19.4°C 都市: Sydney, 気温: 13.3°C |
無事出力されたので、20℃と言うフィルターがちゃんとかかっていることがわかりました。
ステップ4: APIから取得したデータをCSVファイルに保存
目標
APIから取得したデータをCSVファイルに保存する方法を学びます。
手順
- APIからデータを取得:
- これまでに学んだ方法で、複数の都市の天気データをAPIから取得します。
- CSVファイルにデータを保存:
- Pythonの
csv
モジュールを使用して、取得したデータをCSVファイルに書き込みます。
- Pythonの
具体的なコード例
以下のコードでは、複数の都市の天気データを取得し、それをweather_data.csv
というCSVファイルに保存します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
import requests import csv # Free Weather APIのAPIキーを設定 api_key = 'your_api_key_here' # ここに取得したAPIキーを入力してください # 複数の都市のリスト cities = ['Tokyo', 'London', 'New York', 'Paris', 'Sydney'] # 保存するCSVファイルの名前 csv_file = 'weather_data.csv' # CSVファイルを開き、ヘッダーを書き込む with open(csv_file, 'w', newline='', encoding='utf-8') as file: writer = csv.writer(file) writer.writerow(['都市', '気温 (°C)', '天気']) # 各都市の天気データを取得 for city in cities: url = f'http://api.weatherapi.com/v1/current.json?key={api_key}&q={city}&aqi=no' response = requests.get(url) data = response.json() if response.status_code == 200: # 天気データをCSVに書き込む city_name = data['location']['name'] temp = data['current']['temp_c'] weather = data['current']['condition']['text'] writer.writerow([city_name, temp, weather]) else: print(f"エラーが発生しました: {data.get('error', {}).get('message', 'Unknown error')}") print(f"データが {csv_file} に保存されました。") |
広告募集中
出力
1 2 3 4 5 6 7 |
#weather_data.csv 都市,気温 (°C),天気 Tokyo,27.4,Partly cloudy London,17.3,Clear New York,24.4,Overcast Paris,19.2,Light rain shower Sydney,13.1,Partly cloudy |
csvファイルの中へ無事に出力ができました。
ステップ5: CSVファイルからデータを読み込み
目標
保存されたCSVファイルからデータを読み込み、特定の条件に基づいてフィルタリングし、基本的な分析を行います。
手順
- CSVファイルからデータを読み込む:
- Pythonの
csv
モジュールを使用して、CSVファイルからデータを読み込みます。
- Pythonの
- データのフィルタリング:
- 例えば、気温が特定の値以上の都市のみを抽出します。
- データの分析:
- フィルタリングしたデータを基に、平均気温を計算したり、特定の条件に合致する都市の数を集計します。
具体的なコード例
以下のコードでは、前のステップで保存したweather_data.csv
ファイルからデータを読み込み、気温が20°C以上の都市のみをフィルタリングし、その平均気温を計算する例を示します。
データの読み込みとフィルタリング
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import csv # 保存されたCSVファイルの名前 csv_file = 'weather_data.csv' # CSVファイルを読み込み、データをリストに格納 weather_data = [] with open(csv_file, newline='', encoding='utf-8') as file: reader = csv.DictReader(file) for row in reader: # タイトルと価格をリストに追加(価格はfloat型に変換) weather_data.append({ 'city': row['都市'], 'temp': float(row['気温 (°C)']), 'weather': row['天気'] }) # 価格が20°C以上の書籍をフィルタリング filtered_data = [entry for entry in weather_data if entry['temp'] >= 20] # フィルタリング結果の表示 for entry in filtered_data: print(f"都市: {entry['city']}, 気温: {entry['temp']}°C, 天気: {entry['weather']}") |
出力
1 2 |
都市: Tokyo, 気温: 27.4°C, 天気: Partly cloudy 都市: New York, 気温: 24.4°C, 天気: Overcast |
広告募集中
ステップ6:フィルタリングと分析を行う
データの分析
1 2 3 4 5 6 7 8 9 |
# フィルタリングした都市の平均気温を計算 if filtered_data: avg_temp = sum([entry['temp'] for entry in filtered_data]) / len(filtered_data) print(f"\n気温が20°C以上の都市の平均気温: {avg_temp}°C") else: print("気温が20°C以上の都市はありませんでした。") # フィルタリングされた都市の数を表示 print(f"気温が20°C以上の都市の数: {len(filtered_data)}都市") |
出力
1 2 |
気温が20°C以上の都市の平均気温: 25.9°C 気温が20°C以上の都市の数: 2都市 |
このステップでは、CSVファイルからデータを読み込みと、フィルタリングと分析を行う方法を学び、データの再利用が容易になりました。特定の条件に基づいて効率的にデータを処理できるようになります。
まとめ
今回の内容は、APIを活用して、データの取得から分析までの一連をやってみました。
次回は、もう少しより複雑なデータ処理や、APIの活用方法について学ぶことができます。
ここまでは、APIを活用したスクレイピングの基礎をやってきております。わからない部分が出てくところでもありますが一緒に頑張っていきましょう。
Pythonを学びたい方はこちらの記事を参考にしてみてください
関連記事
プログラミング学習を進めているけれど、まだ副収入につなげられていない…そんなあなたへ!今こそ、学んだスキルを活かして副業に挑戦する絶好のチャンスです。プログラミングだけでなく、自分のスキルや商品をネットで販売する『ネットショップ』を開設してみませんか?
ネットショップを持つことで、自分の知識やスキルをより多くの人に届け、副収入を得ることが可能です。学んできたプログラミングを活かして、ショップのカスタマイズや運営も自由自在に行えますし、もし商品作成が難しい場合でも、デジタル商品やサービス提供など、いろんな選択肢があります。
このステップで一歩踏み出せば、今学んでいることが副収入に直結し、自分の時間をより有効に使うことができるはずです!一緒にネットショップを開設し、副業の第一歩を踏み出しましょう!
タイトルテキスト
プログラミングを学びたいけど、どこから始めたらいいのか分からない、自分に合っているか不安…そんな悩みを持っている方におすすめしたいのが、 無料相談 サービスです!
この無料相談では、あなたの現状や目標に合わせて、最適な学習プランを一緒に考えてくれます。どんなスキルが必要なのか、どうやって学習を進めると効果的かを具体的にアドバイスしてもらえるので、無駄なく効率的にスタートを切ることができます。
さらに、プログラミング学習には同じ目標を持つ 仲間 がいること、そして頼りになる メンター の存在がとても大きな支えになります。独学ではどうしてもつまずきやすい部分も、メンターがあなたの成長に合わせて親身にサポートしてくれるので、安心して学びを進められます。
まずは 無料相談 で、あなたに合ったプランを見つけて、スキルアップへの第一歩を踏み出してみませんか?今なら、迷っている方でも気軽に相談できるチャンスです!
次回の記事は
関連記事