반응형
네이버 검색 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 검색 테스트
- 검색어와 출력건수, 정렬 방법을 입력받아 검색 결과 출력하기
- 결과 화면
반응형