IT/파이썬

[파이썬]네이버 OPEN API 영화검색 사용하기

SageIN 2021. 8. 9. 12:34
반응형
import requests

대학교나 학원에서 네이버 영화부분을 크롤링하는 과제를 많이 내는듯하다.

크롤링말고도 네이버에서는 하루에 2만5천건을 쓸수 있는 검색 API를 제공하고 있다.

 

API 기본 정보를 보면 

GET 타입으로 

https://openapi.naver.com/v1/search/movie.json

 

JSON 출력하는 형태로 데이터를 뽑을 수 있다.

 

GET 요청을 보낼수 있는 필수 변수를 살펴보자.

 

query : 필수이고 검색어이다. "태극기 휘날리며" 영화명을 넣자.

 

나머지 비필수 변수들은 정확한 데이터를 얻고자하면

다 채워서 보내주면 좋을듯하다. 

 

간단하게 파이썬으로 요청하는 쿼리를 짜보면.

 

import requests

통신을하기 위해 requests 모듈을 import 해주고

 

headers = {
        'Host': 'openapi.naver.com',
        'User-Agent': 'curl/7.49.1',
        'Accept': '*/*',
        'X-Naver-Client-Id': '애플리케이션 등록 시 발급받은 client id 값',
        'X-Naver-Client-Secret': '애플리케이션 등록 시 발급받은 client secret 값',

    }

requests에서 사용할 header 정보를 만들자.

X-Naver-Client-Id 와 X-Naver-Client-Secret 는

https://developers.naver.com/apps/#/wizard/register

페이지에서 애플리케이션 등록하고 발급받은 

값을 넣어주면 된다.

 

url = '	https://openapi.naver.com/v1/search/movie.json'

요청할 URL을 변수를 하나 만들어주고

 

params = {'query':'태극기 휘날리며', # 필수
          #'display': '5', # 출력수
          #'start': '1', # 시작위치
          #'genre': '1', # 장르
          #'country': 'KR', # 제작국가
          #'yearfrom': '2001',# 제작년도 시작
          #'yearto': '2005' # 제작년도 끝
          }

필수값인 query 는 꼭 넣어주고

나머지 파라미터 변수는 넣어서 보낼경우

주석을 풀고 작성해준다.

response = requests.get(url,headers=headers, params=params)

requests.get 함수에 위에서

작성한 URL, 해더, 파라미터 변수 값을 넣어주고 

통신을 요청한다.

print(response.text)
{
  "lastBuildDate": "Mon, 09 Aug 2021 12:24:42 +0900",
  "total": 1,
  "start": 1,
  "display": 1,
  "items": [
    {
      "title": "<b>태극기 휘날리며</b>",
      "link": "https://movie.naver.com/movie/bi/mi/basic.nhn?code=36666",
      "image": "https://ssl.pstatic.net/imgmovie/mdi/mit110/0366/36666_P123_112236.jpg",
      "subtitle": "TaeGukGi: Brotherhood Of War",
      "pubDate": "2003",
      "director": "강제규|",
      "actor": "장동건|원빈|이은주|",
      "userRating": "9.21"
    }
  ]
}

응답한 데이터를 뽑아보자. 

json 형태로 데이터가 나온다. 

import json

json 모듈을 import 해주고

jsonObject = json.loads(response.text)
print(jsonObject.get("lastBuildDate"))

데이터를 json 데이터를 파싱하여 필요한 정보를 얻어보자.

Mon, 09 Aug 2021 12:29:08 +0900

 

전체코드

import requests
import json

# 해더생성
headers = {
        'Host': 'openapi.naver.com',
        'User-Agent': 'curl/7.49.1',
        'Accept': '*/*',
        'X-Naver-Client-Id': '애플리케이션 등록 시 발급받은 client id 값',
        'X-Naver-Client-Secret': '애플리케이션 등록 시 발급받은 client secret 값',

    }

# 요청 URL    
url = '	https://openapi.naver.com/v1/search/movie.json'

# 요청 파라미터
params = {'query':'태극기 휘날리며', # 필수
          #'display': '5', # 출력수
          #'start': '1', # 시작위치
          #'genre': '1', # 장르
          #'country': 'KR', # 제작국가
          #'yearfrom': '2001',# 제작년도 시작
          #'yearto': '2005' # 제작년도 끝
          }

#통신
response = requests.get(url,headers=headers, params=params)

# json 파싱
jsonObject = json.loads(response.text)

# 값 확인
print(jsonObject.get("lastBuildDate"))

 

반응형