*API(Application Programming Interface)
API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.
import csv
import requests
from decouple import config
from datetime import timedelta, datetime
from pprint import pprint
# 정보를 담을 빈 딕셔너리 생성
result = {}
# url을 호출
for i in range(1040):
# 2020년 12월31일을 기준으로 1주일씩 과거의 데이터
targetDt = datetime(2020, 12, 31) - timedelta(weeks=i)
targetDt = targetDt.strftime('%Y%m%d')
url = f'http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchWeeklyBoxOfficeList.json?key=&targetDt={targetDt}'
# 받은 상세정보를 저장
api_data = requests.get(url).json()
# 필요한 정보 접근 후 재저장
movies = api_data.get('boxOfficeResult').get('weeklyBoxOfficeList')
# result 딕셔너리에 넣기
for movie in movies:
code = movie.get('movieCd')
if code not in result:
result[code] = {
'movieCd': movie.get('movieCd'),
'movieNm': movie.get('movieNm'),
'audiAcc': movie.get('audiAcc')
}
# result 딕셔너리를 boxoffice.csv을 생성하여 저장
with open('boxoffice_2.csv', 'w', encoding='utf-8', newline='') as f:
fieldnames = ('movieCd', 'movieNm', 'audiAcc')
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
for value in result.values():
# print(value)
writer.writerow(value)
*Json
속성-값 쌍( attribute–value pairs and array data types (or any other serializable value)) 또는 "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷
with open('/content/drive/MyDrive/boxoffice_2_0224.csv', newline='', encoding='utf-8') as f:
reader = csv.DictReader(f)
movieCd_lists = []
for row in reader:
movieCd_lists.append(row['movieCd'])
result = {}
for movieCd_list in movieCd_lists:
movieCd = movieCd_list
url = f'http://www.kobis.or.kr/kobisopenapi/webservice/rest/movie/searchMovieInfo.json?key=&movieCd={movieCd}'
detail_data = requests.get(url).json()
movie_infos = detail_data.get('movieInfoResult').get('movieInfo')
for movie_info in movie_infos:
result[movieCd_list] = {
'movieCd': movie_infos.get('movieCd'),
'movieNm': movie_infos.get('movieNm'),
'watchGradeNm': movie_infos.get('audits')[0].get('watchGradeNm') if movie_infos.get('audits') else None,
'openDt': movie_infos.get('openDt'),
'showTm': movie_infos.get('showTm'),
'genres': movie_infos.get('genres')[0].get('genreNm') if movie_infos.get('genres') else None,
'director': movie_infos.get('directors')[0].get('peopleNm') if movie_infos.get('directors') else None,
'actor': movie_infos.get('actors')[0].get('peopleNm') if movie_infos.get('actors') else None,
'companys': movie_infos.get('companys')[0].get('companyNm') if movie_infos.get('companys') else None,
'nation': movie_infos.get('nations')[0].get('nationNm') if movie_infos.get('nations') else None}
with open('movie_info.csv', 'w', encoding='utf-8', newline='') as f:
fieldnames = ('movieCd', 'movieNm', 'watchGradeNm', 'openDt', 'showTm', 'genres', 'director', 'actor', 'companys', 'nation')
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
for value in result.values():
writer.writerow(value)
'Data Science > Python' 카테고리의 다른 글
dataframe 자주 쓰는 것들 (1) | 2021.06.17 |
---|---|
지수 표기 숫자로 변환하여 표현하기 (0) | 2021.02.23 |
Python으로 하는 EDA(Exploratory Data Analysis) (0) | 2021.01.31 |
Python 결측치 처리 (0) | 2021.01.14 |
python으로 카이제곱 검정 (0) | 2021.01.06 |