파이썬으로 영화데이터를 수집하는 코드를 만들었다.
기존의 HTTP프로토콜 GET방식은 /list.do?searchKey=abc, dataType=json처럼 URL의 ? 뒤에 모든 파라미터가 와서 string.format(key=value)로 쉽게 해결했었다.
그런데 이 사이트는 /{movies}?api_key={key} 형태로 되어있어서 EL객체 형태의 매핑을 하게 만들어주는 string.format_map() 메서드와 __missing__함수를 담고있는 클래스를 설정해주어야 했다.
영화 리스트 중간중간에 비어있는 번호가 있어 try: except:를 이용해서 오류가 나더라도 멈추지 않도록 조치를 취하였다.
API 및 영화 자료는 아래에서 확인할 수 있다.
# 홈페이지 https://www.themoviedb.org/
# Document https://developers.themoviedb.org/3
============================= Python =============================
# 영화정보를 API를 이용해서 가져오기
# 홈페이지 https://www.themoviedb.org/
# Document https://developers.themoviedb.org/3
import requests
import json
# API 지정
apikey = "api키"
# 정보를 알고 싶은 영화 리스트 만들기
movie_list = range(501, 600)
# API 지정
api = "https://api.themoviedb.org/3/movie/{movies}?api_key={key}"
# string.format_map() 매핑용 클래스 만들기
class Default(dict):
def __missing__(self, key):
return key
# 각 영화의 정보 추출하기
for name in movie_list:
try:
# API의 URL 구성하기
url = api.format_map(Default(movies=name, key=apikey))
# print(url) # 데이터 확인
# API에 요청을 보내 데이터 추출하기
r = requests.get(url) # json 형태의 데이터가 나온다.
# print(type(r)) # <class 'requests.models.Response'>
# 결과를 JSON 형식으로 변환하기
data = json.loads(r.text)
# print(type(data)) # <class 'dict'>
# print(data) # 데이터 확인
print("+ 영화제목 =", data["title"])
print("| 장르 =", data["genres"][0]["name"])
print("| 원본 제목 =", data["original_title"])
print("| 개요 =", data["overview"])
print("| 유명도 =", data["popularity"])
print("| 제작사 =", data["production_companies"][0]["name"])
print("")
except:
print("영화번호 " + name + " 에 데이터 없음")
============================= Python =============================
'데이터 분석 > 데이터 분석 기초 자료' 카테고리의 다른 글
[TensorFlow] TensorFlow 기초 (0) | 2018.07.23 |
---|---|
[알고리즘]랜덤포레스트(RandomForest) (0) | 2018.07.21 |
[Python Scraping] HTML에 존재하는 전체 데이터를 재귀적으로 가져오기 (0) | 2018.07.03 |
[Tensorflow] AVX 미지원으로 인한 "DLL 초기화 루틴을 실행할 수 없습니다." 에러 해결방법 (1) | 2018.06.29 |
[Hadoop] 가상환경을 이용하여 하둡(Hadoop) 설치하기 - 2 (우분투 서버(ubuntu server)설치) (0) | 2018.06.28 |