API から写真カタログを収集するコースは、小さなプログラムを書ける方に向けた Python の実践プロジェクトです。地域の写真ライブラリの編集担当者を助け、最初のページのプレビューを、条件に合う完全な CSV カタログに変えます。用意されたローカル HTTP API 用の再利用可能なクライアントを作り、途中のリクエストが失敗したときにも、以前の完全なエクスポートを保護します。
2 つのガイド付きラボで、1 回のレスポンスの読み取りから、すべてのカーソルの追跡、ID の重複排除、完全な結果の公開へと進みます。独立したチャレンジでは、別のコレクション、ページサイズ、選択条件に同じ方法を適用します。各単元は、それぞれ準備済みの環境から始まります。所要時間の目安は約 110~150 分です。これは著者の見積もりで、初心者による実測時間ではありません。
学習内容
このコースを修了すると、次のことができるようになります。
- HTTP で JSON レコードを取得し、クエリパラメータをエンコードし、リクエストのタイムアウトを設定して、成功レスポンスと HTTP エラーを区別する。
- ページ送りのカーソルを不透明な値として扱い、空ページや短いページの後も
next_cursorがnullになるまで取得を続ける。 - 安定した写真 ID ごとに 1 件のレコードを残し、同じタイトルでも ID の異なる写真は保持する。
- カテゴリと向きを大文字・小文字を区別して完全一致で絞り込み、5 つのフィールドすべてを正しい UTF-8 CSV に書き出す。一致がない場合はヘッダーのみを出力する。
- リクエスト失敗やカーソルの繰り返しによる循環を、非ゼロの終了コードで拒否し、以前の完全な出力を保つ。
- 出力ディレクトリ内の一意な一時ファイルで正常なエクスポートを公開し、無関係な隣接ファイルを上書きしない。
- 同じプログラムを、別の指定されたコレクション URL、ページサイズ、条件、出力先パスで再利用する。
このコースの対象者
このコースは、学習済みのループやコレクションを、実用的な API クライアントと再利用可能なデータファイルに活かしたい Python 学習者を対象としています。
前提知識: Python の関数、コレクション、ループ、例外、基本的なファイル出力と、基本的なターミナル操作が必要です。ピクニックの買い物リストを作るプロジェクト、または同等の経験が適切な準備になります。HTTP、JSON レスポンスの構造、URL エンコード、カーソル、CSV の引用符、一時ファイルによる置換はガイド付きラボで説明します。
学習環境: LabEx がブラウザ内の Python エディタ、ターミナル、独自のローカルデモ API を提供します。カタログには合成イラストと架空のクレジットを使用します。元データ、サービスのコード、素材は変更しません。エラーと復旧の練習には、明示されたデモ用の障害およびカーソル循環の操作だけを使えます。実行環境のラベルと出力は英語のままです。
よくある質問
外部アカウントや API キーは必要ですか?
必要ありません。リクエストは準備済みのローカルデモサービスに送ります。ホスト型の写真提供サービスへの接続、外部サイトのスクレイピング、認証の実装は行いません。
ウェブサイトを作ったり、写真をダウンロードしたりしますか?
いいえ。Python クライアントを作り、写真のメタデータを CSV として出力します。用意されたイラストはレコードを見分けるためのものです。画像のダウンロード、描画、ウェブサイトの開発はこのプロジェクトの範囲外です。
収集が途中で止まったらどうなりますか?
クライアントはエラー終了し、既存の完全なエクスポートを保持する必要があります。デモサービスを復旧した後、新しい有限のバッチを最初から実行します。自動再試行や中断したバッチの再開は扱いません。ローカルファイルの置換は、停電時の永続性や同時書き込みの調整を保証するものではありません。
チャレンジでは何を応用しますか?
異なるパラメータを使い、最終ページにも一致するレコードがある別のコレクションを収集します。必要なツール、ページ送りのルール、絞り込み、CSV 形式、エラー処理は、ガイド付きラボで学習済みです。

