Python
[API] 영화진흥위원회 제공 박스오피스 API 사용
Signing
2020. 2. 28. 06:06
728x90
반응형
1. 계정 생성
영화진흥위원회 오픈API
www.kobis.or.kr
위의 주소에 들어가서 영화진흥위원회 페이지에서 회원가입을 먼저 진행해야한다.
2. 이후 상단의 "키 발급/관리" 탭을 클릭하여 키를 발급받는다.
3. Coding
from urllib.request import urlopen
from urllib.parse import urlencode, unquote, quote_plus
import urllib
import requests
from pandas.io.json import json_normalize
import json
import pandas as pd
# Area Data(Meta Data)
# 01. URL parsing
url_for_areaCode = 'http://www.kobis.or.kr/kobisopenapi/webservice/rest/code/searchCodeList.json'
params_for_areaCode = '?' + urlencode({
quote_plus("key"): "~~~~~", # 발급키
quote_plus("comCode"): "0105000000" # 조회하고자하는 상위 코드
})
req_for_areaCode = urllib.request.Request(url_for_areaCode + unquote(params_for_areaCode))
# 02. get Data
for_areaCode = urlopen(req_for_areaCode).read() # get bytes data
# 03. Convert Readable Data
data_for_areaCode = json.loads(for_areaCode)
area_code = pd.DataFrame(data_for_areaCode['codes'])
# 지역코드 : area code
# fullCd korNm engNm
# 0 0105001 서울시
# 1 0105002 경기도
# 2 0105003 강원도
# 3 0105004 충청북도
# 4 0105005 충청남도
# 5 0105006 경상북도
# 6 0105007 경상남도
# 7 0105008 전라북도
# 8 0105009 전라남도
# 9 0105010 제주도
# 10 0105011 부산시
# 11 0105012 대구시
# 12 0105013 대전시
# 13 0105014 울산시
# 14 0105015 인천시
# 15 0105016 광주시
# 16 0105017 세종시
# Movie Data
url = 'http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json'
# loop per area
res = pd.DataFrame()
for i, areaCode in enumerate(area_code['fullCd']):
for yn in ['Y', 'N']:
for kf in ['K', 'F']:
# 01. URL parsing
params = '?' + urlencode({
quote_plus("key"): "~~~~", # 발급키
quote_plus("targetDt"): "20200224", # 원하는 일자
quote_plus("itemPerPage"): "20", # 결과 row 수 // 최대 10개
quote_plus("multiMovieYn"): str(yn), # Y(다양성 영화), N(상업영화)
quote_plus("repNationCd"): str(kf), # K(한국 영화), F(외국 영화)
quote_plus("wideAreaCd"): str(areaCode) # 지역코드
})
req = urllib.request.Request(url + unquote(params))
# 02. get Data
response_body = urlopen(req).read() # get bytes data
# 03. Convert Readable Data
data = json.loads(response_body)
data_df = pd.DataFrame(data['boxOfficeResult']['dailyBoxOfficeList'])
data_df['multiMovieYn'] = yn
data_df['repNationCd'] = kf
data_df['fullCD'] = areaCode
data_df['korNm'] = area_code['korNm'][i]
# 04. merge data per area
res = res.append(data_df)
print("complete multiMovieYn : ", yn, "\t repNationCd : ", kf, "\t wideAreaCd : ", areaCode)
pd.DataFrame(res).to_csv('C:/Users/DAL/Desktop/KW/movie.csv')
728x90
반응형