본문 바로가기

BackEnd

API - NAVER NEW SEARCH Open API사용하기

반응형
NAVER NEW SEARCH Open API를 이용해 검색 API 만들기

 

 

 

https://developers.naver.com/docs/serviceapi/search/news/news.md#%EB%89%B4%EC%8A%A4

 

뉴스 - Search API

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

developers.naver.com

 

 

NAVER의 Open API인 Search API를 이용해 뉴스 검색을 해보자

 

1. NAVER News Search API를 사용하기위해 네이버 개발자 센터에서 애플리케이션을 등록(API 이용신청)한다.

 

 

2. 다른 API를 이용하려면 requests 라이브러리를 이용하면 된다.

 

 

3. 위의 NAVER News Search API 링크를 참고하여 app.py 파일에 클래스를 연결해본다.

 

 

 

app.py

 

from flask import Flask
from flask_jwt_extended import JWTManager
from flask_restful import Api
from config import Config
from resources.naver import NaverPapagoEnResource, NaverPapagoResource, NaverSearchResource


app = Flask(__name__)

# 환경변수 셋팅
app.config.from_object(Config)

# JWT Token Library 만들기
jwt = JWTManager(app)

api = Api(app)

api.add_resource(NaverPapagoResource, '/chinese')
api.add_resource(NaverPapagoEnResource, '/en')
api.add_resource(NaverSearchResource, '/search')


if __name__ == '__main__' :
    app.run()

 

 

 

naver.py

 

from datetime import datetime
from http import HTTPStatus
from flask import request
from flask_jwt_extended import get_jwt_identity, jwt_required
from flask_restful import Resource
from config import Config
import requests


class NaverSearchResource(Resource) :
    def get(self) :

        query = request.args['query']
        display = request.args['display']
        sort = request.args['sort']

        data = { 'query' : query, 'display' : display, 'sort' : sort}

        headers = { 'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8',
                    'X-Naver-Client-Id' : Config.NAVER_CLIENT_ID,
                    'X-Naver-Client-Secret' : Config.NAVER_CLIENT_SECRET }
        
        res = requests.get(Config.NAVER_NEWS_SEARCH_URL, params = data, headers = headers)

        res = res.json()

        #print(res)

        # res의 display와 itemsaks 만 있으면 된다

        

        return{ 'result' : 'success',
                'count' : res['display'],
                'items' : res['items'] }, 200

 

 

 

4. POSTMAN으로 TEST

 

 

반응형