파이썬으로 영화데이터를 수집하는 코드를 만들었다.

기존의 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 =============================

+ Recent posts