728x90
영화진흥위원회(KOBIS) 오픈 API를 사용해 일별 박스오피스 데이터를 가져오는 Python 샘플 코드를 작성해드리겠습니다. 제공된 링크(https://www.kobis.or.kr/kobisopenapi/homepg/apiservice/searchServiceInfo.do)를 기반으로, 일별 박스오피스 데이터를 JSON 형식으로 요청하고 결과를 출력하는 예제를 작성합니다. 이 예제는 requests
라이브러리를 사용하며, 결과는 간단히 콘솔에 출력하거나 CSV 파일로 저장할 수 있습니다.
전제 조건
- API 키 발급: KOBIS 오픈 API를 사용하려면 회원가입 후 인증 키를 발급받아야 합니다. 회원가입은 https://www.kobis.or.kr/kobisopenapi/homepg/main/main.do에서 진행하고, 키 발급/관리 메뉴에서 키를 발급받으세요.
- 필요 라이브러리:
requests
와pandas
라이브러리가 필요합니다. 설치가 안 되어 있다면 다음 명령어로 설치하세요:pip install requests pandas
샘플 코드
아래는 일별 박스오피스 데이터를 가져와 콘솔에 출력하고 CSV 파일로 저장하는 Python 코드입니다. 이 예제는 특정 날짜(예: 2025년 7월 21일)의 박스오피스 데이터를 조회합니다.
import requests
import pandas as pd
# KOBIS API 설정
API_KEY = "f5eef3421c602c6cb7ea224104795888" # 본인의 API 키로 교체하세요
BASE_URL = "http://kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json"
TARGET_DT = "20250721" # 조회할 날짜 (YYYYMMDD 형식, 예: 2025-07-21)
ITEM_PER_PAGE = "10" # 한 페이지에 반환할 항목 수 (최대 10)
# API 요청 URL 생성
url = f"{BASE_URL}?key={API_KEY}&targetDt={TARGET_DT}&itemPerPage={ITEM_PER_PAGE}"
# API 요청
try:
response = requests.get(url)
response.raise_for_status() # HTTP 에러가 있으면 예외 발생
data = response.json() # JSON 응답 파싱
# 데이터 확인
if "boxOfficeResult" in data and "dailyBoxOfficeList" in data["boxOfficeResult"]:
daily_box_office = data["boxOfficeResult"]["dailyBoxOfficeList"]
# 출력할 데이터 리스트 생성
movie_list = []
for movie in daily_box_office:
movie_info = {
"Rank": movie["rank"],
"Movie Name": movie["movieNm"],
"Audience Count": movie["audiCnt"],
"Sales Amount": movie["salesAmt"],
"Open Date": movie["openDt"]
}
movie_list.append(movie_info)
# 콘솔에 출력
print(f"Daily Box Office for {TARGET_DT}:")
for movie in movie_list:
print(f"Rank: {movie['Rank']}, Movie: {movie['Movie Name']}, "
f"Audience: {movie['Audience Count']}, Sales: {movie['Sales Amount']}, "
f"Open Date: {movie['Open Date']}")
# CSV로 저장
df = pd.DataFrame(movie_list)
df.to_csv("daily_box_office.csv", index=False, encoding="utf-8")
print("Data saved to 'daily_box_office.csv'")
else:
print("No box office data found for the specified date.")
except requests.exceptions.HTTPError as http_err:
print(f"HTTP error occurred: {http_err}")
except requests.exceptions.RequestException as err:
print(f"Error occurred: {err}")
except ValueError as json_err:
print(f"JSON decoding error: {json_err}")
코드 설명
- API 설정:
API_KEY
: KOBIS에서 발급받은 인증 키를 입력하세요. 위 코드의 키는 예시입니다.BASE_URL
: 일별 박스오피스 API의 기본 URL입니다.TARGET_DT
: 조회하려는 날짜를 YYYYMMDD 형식으로 지정합니다.ITEM_PER_PAGE
: 한 페이지에 반환할 영화 수(최대 10)를 설정합니다.
- API 요청:
requests.get()
을 사용해 API를 호출합니다.- 요청 URL은
key
,targetDt
,itemPerPage
파라미터를 포함합니다. response.raise_for_status()
로 HTTP 에러를 체크합니다.
- 데이터 처리:
- 응답은 JSON 형식으로 받아 파싱합니다.
boxOfficeResult
내의dailyBoxOfficeList
에서 영화 데이터를 추출합니다.- 각 영화의 순위(
rank
), 제목(movieNm
), 관객 수(audiCnt
), 매출액(salesAmt
), 개봉일(openDt
)를 추출해 리스트로 저장합니다.
- 출력 및 저장:
- 콘솔에 영화 정보를 출력합니다.
pandas
를 사용해 데이터를 CSV 파일(daily_box_office.csv
)로 저장합니다.
- 에러 처리:
- HTTP 에러, 네트워크 에러, JSON 파싱 에러 등을 처리해 안정성을 높였습니다.
실행 결과
- 콘솔 출력 예시:
20250721 일별 박스오피스 순위: 순위: 1, 제목: F1 더 무비, 관객 수: 50924, 매출액: 544976290, 개봉일: 2025-06-25 순위: 2, 제목: 명탐정 코난: 척안의 잔상, 관객 수: 29199, 매출액: 276738050, 개봉일: 2025-07-16 순위: 3, 제목: 킹 오브 킹스, 관객 수: 27642, 매출액: 250207750, 개봉일: 2025-07-16 순위: 4, 제목: 노이즈, 관객 수: 27200, 매출액: 261983750, 개봉일: 2025-06-25 순위: 5, 제목: 쥬라기 월드: 새로운 시작, 관객 수: 19925, 매출액: 185814220, 개봉일: 2025-07-02 순위: 6, 제목: 슈퍼맨, 관객 수: 14061, 매출액: 136166580, 개봉일: 2025-07-09 순위: 7, 제목: 전지적 독자 시점, 관객 수: 3142, 매출액: 28566000, 개봉일: 2025-07-23 순위: 8, 제목: 괴기열차, 관객 수: 2230, 매출액: 19812300, 개봉일: 2025-07-09 순위: 9, 제목: 극장판 도라에몽: 진구의 그림이야기, 관객 수: 1833, 매출액: 15926600, 개봉일: 2025-07-16 순위: 10, 제목: 메간 2.0, 관객 수: 1801, 매출액: 16873300, 개봉일: 2025-07-16 데이터가 'daily_box_office.csv' 파일로 저장되었습니다.
daily_box_office.csv
파일이 생성되며, 영화 정보가 테이블 형태로 저장됩니다.
추가 참고
- API 문서: KOB
728x90
'Python을 배워보자' 카테고리의 다른 글
Playwright: 현대적인 웹 테스트 자동화의 강자 (3) | 2025.07.26 |
---|---|
국가별 월별 기온 데이터를 FastAPI로 백엔드 구축 및 Dash로 테이블 출력하기 (3) | 2025.07.24 |
파이썬 Trafilatura: 웹 크롤링과 텍스트 추출의 강력한 도구 (0) | 2025.06.22 |
오라클 저장 프로시저 내부 오류 캡처 및 Python oracledb로 애플리케이션 레벨 오류 처리 방법 (0) | 2025.06.15 |
파일 검색 및 문맥 리포트 생성하기 (0) | 2025.06.07 |