네이버 검색 API - 기초 설정, 사용 방법, RESTful API에서 사용하기

반응형

네이버 검색 API를 사용하기 위한 라이브러리 설치

pip install requests

Visual Studio Code

  • 사용 언어 : Python

 

라이브러리 호출

import requests

 

소스 코드

  • 설정 - URL, API키
# ref폴더의 Config.py파일, 보안을 위해 API키 저장
from ref.config import Config

# 검색 API URL, 자세한건 레퍼런스 참조
    naver_search_blog_url = "https://openapi.naver.com/v1/search/blog.json"
    naver_search_news_url = "https://openapi.naver.com/v1/search/news.json"
    naver_search_dic_url = "https://openapi.naver.com/v1/search/encyc.json"

# URL, client_id, client_secret은 config 파일에 있음
# 헤더 설정, 부여받은 네이버검색 API키 입력
headers = {
    "Content-Type" : "application/x-www-form-urlencoded; charset=UTF-8",
    "X-Naver-Client-Id" : Config.naver_search_client_id,
    "X-Naver-Client-Secret" : Config.naver_search_client_secret,
}

 

  • 검색하기 - 검색 할 데이터 설정 후 네이버 검색 API 호출
# 검색 데이터 설정
# query = 검색어 UTF-8 인코딩
# display = 검색 결과 출력 건수 지정 (최소10(기본값)~최대100)
# sort = 정렬(sim:유사도(기본값), date:날짜)
data = {
    "query" : "마녀",
    "display" : "1",
    "sort" : "sim"
}

# URL, 데이터, API키가 담긴 헤더 정보 네이버 API 측으로 전송
res = requests.get(Config.naver_search_news_url, params=data, headers=headers)

 

확인

  • 검색 결과 확인
res = res.json()
print(res)
>>>
{
    "lastBuildDate": "Tue, 28 Jun 2022 11:04:26 +0900",
    "total": 266737,
    "start": 1,
    "display": 1,
    "items": [
        {
            "title": "[차트IS] ‘<b>마녀</b>2’ 제친 ‘탑건: 매버릭’ 6일 연속 박스오피스 1위",
            "originallink": "https://isplus.joins.com/2022/06/28/enter/entertainment/20220628084617182.html",
            "link": "https://n.news.naver.com/mnews/article/241/0003217828?sid=106",
            "description": "팀원들과 함께 생사를 넘나드는 미션에 투입되는 과정을 그린 영화다. 지난 22일 개봉한 이후 6일 연속 박스오피스 1위를 지키고 있다. 같은 날 박스오피스 2위는 4만 9000명의 관객을 동원한 ‘<b>마녀</b>2’가 차지했다.",
            "pubDate": "Tue, 28 Jun 2022 08:46:00 +0900"
        }
    ]
},

API 서버로 특정단어 네이버에서 검색해보기

Visual Studio Code

  • 메인 파일 : app.py
from flask import Flask
from flask_jwt_extended import JWTManager
from flask_restful import Api
from ref.config import Config
from resources.naver_search import Searchesource

# API 서버를 구축하기 위한 기본 구조
app = Flask(__name__)

# 환경변수 셋팅
app.config.from_object(Config) # 만들었던 Config.py의 Config 클래스 호출

# restfulAPI 생성
api = Api(app)

# 경로와 리소스(api코드) 연결
api.add_resource(Searchesource, '/search')

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

 

  • 추가 리소스 파일 : resources/naver_search.py
import requests
from flask import request
from flask_restful import Resource
from ref.config import Config

class Searchesource(Resource):
    def get(self) :
        # URL, client_id, client_secret은 config 파일에 있음
        # 헤더 설정, 부여받은 네이버검색 API키 입력
        headers = {
            "Content-Type" : "application/x-www-form-urlencoded; charset=UTF-8",
            "X-Naver-Client-Id" : Config.naver_search_client_id,
            "X-Naver-Client-Secret" : Config.naver_search_client_secret,
        }

        # 필수  query = 검색어 UTF-8 인코딩
        # 추가 옵션 display = 검색 결과 출력 건수 지정 (최소10(기본값)~최대100)
        # 추가 옵션 start = 검색 시작 위치 (최소1(기본값)~최대1000)
        # 추가 옵션 sort = 정렬(sim:유사도(기본값), date:날짜)

        # GET호출, requests.get()함수 이용, 데이터 셋팅
        keyword = request.args['keyword']
        search_display = request.args['display']
        search_result_sort = request.args['sort']
        data = {
            "query" : keyword,
            "display" : search_display,
            "sort" : search_result_sort
        }

		# 뉴스 검색
        res = requests.get(Config.naver_search_news_url, params=data, headers=headers)
        res = res.json()

        return {
            "검색결과" : res,
            "출력건수" : res['display'],
            "검색내용" : res['items']
        }, 200

POSTMAN - 네이버 검색 API 검색 테스트

  • 검색어와 출력건수, 정렬 방법을 입력받아 검색 결과 출력하기

 

  • 결과 화면

반응형