ACHO.pk devlog

[멋쟁이사자처럼10기] Django 영화 리뷰 사이트(API 다루기) 본문

멋쟁이사자처럼

[멋쟁이사자처럼10기] Django 영화 리뷰 사이트(API 다루기)

Acho 2022. 7. 19. 22:48

 

API 다루기

외부에서부터 정보를 우리가 만든 웹사이트로 가져오는 방법

 

https://developers.naver.com/docs/serviceapi/search/movie/movie.md

 

영화 - Search API

영화 NAVER Developers - 검색 API 영화 검색 개발가이드 검색 > 영화 네이버 영화 검색 결과를 출력해주는 REST API입니다. 비로그인 오픈 API이므로 GET으로 호출할 때 HTTP Header에 애플리케이션 등록 시

developers.naver.com

 

 

1. 오픈 API 이용 신청

 

2. API 사용하기

네이버 서버에 요청을 보내고 응답을 받아야 한다.

나는 JSON 파일 형식으로 응답을 받는 방식을 선택했다.

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

 

장르

 

 

  • 한국 영화 중에서 장르가 2번(=판타지)인 영화만 검색
https://openapi.naver.com/v1/search/movie.json?genre=2&country=KR
  • 영화 검색을 할 때, 검색어에 해당하는 내용이 'query'이다.
https://openapi.naver.com/v1/search/movie.json?query='기생충'

 


파이썬 파일에서 정보 받아보기

 

아래 사이트에 API를 어떤 방식으로 사용해야하는지 언어별로 나와있다.

https://developers.naver.com/docs/serviceapi/search/blog/blog.md#%EB%B8%94%EB%A1%9C%EA%B7%B8

 

블로그 - Search API

블로그 NAVER Developers - 검색 API 블로그 검색 개발가이드 검색 > 블로그 네이버 블로그 검색 결과를 출력해주는 REST API입니다. 비로그인 오픈 API이므로 GET으로 호출할 때 HTTP Header에 애플리케이션

developers.naver.com

 

API를 이용해서 "맛집" 검색 

import os
import sys
import urllib.request

client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"

encText = urllib.parse.quote("맛집")
url = "https://openapi.naver.com/v1/search/blog?query=" + encText # json 결과
#이 url에 대한 정보를 요청
# url = "https://openapi.naver.com/v1/search/blog.xml?query=" + encText # xml 결과

request = urllib.request.Request(url)
request.add_header("X-Naver-Client-Id",client_id)
request.add_header("X-Naver-Client-Secret",client_secret)

response = urllib.request.urlopen(request)
rescode = response.getcode()
if(rescode==200):
    response_body = response.read()
    print(response_body.decode('utf-8'))
else:
    print("Error Code:" + rescode)

 


영화 API 사용해서 '한국' 키워드 영화 검색

encText = urllib.parse.quote("한국")
url = "https://openapi.naver.com/v1/search/movie.json?query=" + encText
  • 영화 정보가 리스트 형식으로 담겨있음

원하는 데이터만 출력해서 보기

pydata = json.loads(resdata)
data = pydata['items']

print(data, "\n")
print(data[0], "\n")
print(data[0]['title'])

응답받은 내용을 json파일로 내보내기

# 네이버 검색 API예제는 블로그를 비롯 전문자료까지 호출방법이 동일하므로 blog검색만 대표로 예제를 올렸습니다.
# 네이버 검색 Open API 예제 - 블로그 검색
import os
import sys
import urllib.request
import json

client_id = "svBzv6zLHpbpRVhS5FcB"
client_secret = "6MSy15mrab"

encText = urllib.parse.quote("한국")
# url = "https://openapi.naver.com/v1/search/blog?query=" + encText # json 결과
# url = "https://openapi.naver.com/v1/search/blog.xml?query=" + encText # xml 결과
url = "https://openapi.naver.com/v1/search/movie.json?query=" + encText

request = urllib.request.Request(url)
request.add_header("X-Naver-Client-Id",client_id)
request.add_header("X-Naver-Client-Secret",client_secret)

response = urllib.request.urlopen(request)

rescode = response.getcode()
if(rescode==200):
    response_body = response.read()
    #print(response_body.decode('utf-8'))
else:
    print("Error Code:" + rescode)

resdata = response_body.decode('utf-8')
with open('movie.json', 'w', encoding = 'UTF-8') as file:
    file.write(json.dumps(resdata, ensure_ascii=False)) #어떤 json 데이터를 가져옴

 

 

Comments