API에서 사진 카탈로그 수집하기는 작은 프로그램을 작성할 수 있는 학습자를 위한 Python 실습 프로젝트입니다. 지역 사진 라이브러리의 편집자를 도와 첫 페이지 미리 보기를 완전한 필터링 CSV 카탈로그로 바꿉니다. 준비된 로컬 HTTP API를 위한 재사용 가능한 클라이언트를 만들고, 이후 요청이 실패해도 이전의 완전한 내보내기 파일을 보호합니다.
두 개의 가이드 실습에서 응답 하나를 읽는 것부터 모든 커서 따라가기, 중복 ID 제거, 완전한 결과 게시까지 진행합니다. 독립 챌린지에서는 다른 컬렉션, 페이지 크기, 선택 조건에 같은 방법을 적용합니다. 각 단원은 별도로 준비된 환경에서 시작합니다. 약 110~150분을 예상하세요. 이는 저자의 추정이며 초보자의 실제 완료 시간을 측정한 값이 아닙니다.
학습 내용
과정을 마치면 다음을 수행할 수 있습니다.
- HTTP로 JSON 레코드를 요청하고, 쿼리 매개변수를 인코딩하고, 요청 제한 시간을 설정하며, 성공 응답과 HTTP 오류를 구분합니다.
- 페이지 구분 커서를 내부 의미를 해석하지 않는 불투명한 값으로 다루고, 빈 페이지나 짧은 페이지 뒤에도
next_cursor가null이 될 때까지 계속합니다. - 안정적인 사진 ID마다 레코드 하나를 보관하면서 제목이 같아도 ID가 다른 사진은 유지합니다.
- 대소문자를 구분해 카테고리와 방향을 정확히 필터링하고 다섯 필드를 모두 유효한 UTF-8 CSV로 작성합니다. 일치하는 항목이 없으면 헤더만 작성합니다.
- 요청 실패나 반복 커서 순환을 0이 아닌 종료 코드로 거부하고 이전의 완전한 출력을 보존합니다.
- 출력 디렉터리의 고유한 임시 파일을 통해 성공한 내보내기를 게시하고, 관계없는 이웃 파일을 덮어쓰지 않습니다.
- 다른 지정 컬렉션 URL, 페이지 크기, 필터, 출력 경로에도 같은 프로그램을 재사용합니다.
추천 대상
이 과정은 익숙한 반복문과 컬렉션을 유용한 API 클라이언트와 재사용 가능한 데이터 파일로 발전시키려는 Python 학습자를 위한 과정입니다.
선수 지식: Python 함수, 컬렉션, 반복문, 예외, 기본 파일 출력 및 기본 터미널 사용법이 필요합니다. 피크닉 장보기 목록 프로젝트나 이에 준하는 경험이 적절한 준비가 됩니다. HTTP, JSON 응답 구조, URL 인코딩, 커서, CSV 따옴표 처리, 임시 파일을 통한 교체는 가이드 실습에서 설명합니다.
학습 환경: LabEx가 브라우저 기반 Python 편집기, 터미널, 직접 제작한 로컬 데모 API를 제공합니다. 카탈로그에는 합성 일러스트와 가상의 저작자 표기를 사용합니다. 원본 데이터, 서비스 코드, 미디어는 변경하지 않으며, 오류와 복구 연습에는 명시적으로 문서화된 데모 실패 및 커서 순환 컨트롤만 사용할 수 있습니다. 실행 환경의 레이블과 출력은 영어로 유지됩니다.
자주 묻는 질문
외부 계정이나 API 키가 필요한가요?
아니요. 요청은 준비된 로컬 데모 서비스로 전송합니다. 호스팅 사진 제공 서비스에 접속하거나, 외부 웹사이트를 스크래핑하거나, 인증을 구현하지 않습니다.
웹사이트를 만들거나 사진을 다운로드하나요?
아니요. Python 클라이언트를 작성하고 사진 메타데이터를 CSV로 내보냅니다. 제공된 일러스트는 레코드를 알아보는 데 사용하며, 이미지 다운로드, 그림 그리기, 웹사이트 개발은 프로젝트 범위에 포함되지 않습니다.
수집이 중간에 멈추면 어떻게 되나요?
클라이언트는 오류로 종료하고 기존의 완전한 내보내기를 보존해야 합니다. 데모 서비스를 복구한 뒤 새 유한 배치를 처음부터 시작합니다. 자동 재시도와 중단된 배치 이어하기는 다루지 않습니다. 로컬 파일 교체는 정전 시 내구성이나 동시 쓰기 조정을 보장하지 않습니다.
챌린지는 가이드 실습을 어떻게 확장하나요?
다른 매개변수로 다른 컬렉션을 수집하며 마지막 페이지에도 조건에 맞는 레코드가 있습니다. 도구, 페이지 구분 규칙, 필터링, CSV 형식, 실패 처리 방법은 이미 가이드 실습에서 배운 내용입니다.

