네이버에서는 검색 API를 제공하여 일 25,000건 한도로 검색엔진에 등록된 다음 데이터를 조회 할 수 있다.
네이버 검색 결과 컨텐츠
웹 서비스 또는 모바일 앱에 네이버 웹문서/블로그/뉴스/책/영화/카페글/지식iN/쇼핑/이미지/백과사전/전문자료 분야에 대한 검색 결과
지역 검색
‘OO역 맛집’, ‘OO동 술집’과 같은 검색 결과를 보여주고 싶을 때 사용하며, 네이버 지역 서비스에 등록된 각 지역별 업체 및 상호 검색 결과
검색 부가 기능
검색 부가 기능으로 특정 검색어에 대해 성인검색어 여부를 알려주는 기능과 검색창에 입력된 오타를 바로 잡아주는 오타변환 기능 제공
위에서 지원하는 기능 중 검색 결과 컨텐츠의 뉴스 검색 기능을 사용하여 파이썬으로 코로나, 부동산 관련 뉴스를 검색해주는 프로그램을 만들었다. 날짜순으로 최근 10건의 기사제목과 요약내용, 링크를 출력해 주도록 하며, 조정 가능하다.
검색 대상 세팅 : 검색어와 정렬기준 등의 정보를 세팅하고 메인함수를 호출하는 코드
def Set_Search():
json_result = []
req_query = ["코로나", "부동산"]
req_display = '10'
req_sort = 'date'
req_target = ['news'] # 네이버 뉴스
Search_main(req_target, req_query, req_display, req_sort, json_result)
검색 기능 MAIN : 전달받은 검색어와 세팅값을 기준으로 검색 결과를 받아오고 출력하는 코드
def Search_main(req_target, req_query, req_display, req_sort, json_result):
for target_url in req_target: # 검색섹션을 정한다
json_result.clear()
for target_query in req_query: # 검색 키워드를 정한다
target_query = target_query.rstrip('\n')
print("\nKeyword is " + target_url + "_" + target_query + ".......")
json_search = Set_Search_Option(target_url, target_query, 1, req_display, req_sort)
if (json_search == None):
json_result.append({'Keyword': "", 'Title': "", 'Description': "", 'Link': "", 'Date': ""})
continue
for post_data in json_search['items']:
print("Title : " + post_data['title'])
print("Summary : " + post_data['description'])
print("Link : " + post_data['link']
검색 요청 URL 옵션 세팅 : MAIN에서 받아온 정보로 요청 URL을 만들어 주고 json 형식으로 리턴해주는 코드
def Set_Search_Option(target_url, search_keyword, page_start, display, sort):
sleep(0.1)
url = furl('https://openapi.naver.com/v1/search/' + target_url)
url.args['query'] = search_keyword
url.args['display'] = display
url.args['sort'] = sort
url.args['start'] = page_start
print(url)
ret_data = Get_Search_Result(url)
if (ret_data == None):
return None
else:
return json.loads(ret_data)
검색 Request : 위에서 최종적으로 세팅된 모든 결과를 취합하여 Request를 보내는 코드
def Get_Search_Result(req_url):
request = urllib.request.Request(req_url)
request.add_header("X-Naver-Client-Id", client_id)
request.add_header("X-Naver-Client-Secret", client_secret)
try:
response = urllib.request.urlopen(request)
rescode = response.getcode()
if (rescode == 200):
return response.read().decode('utf-8')
except Exception as e:
print(e)
print("Error Code:" + str(req_url))
return None
전체 코드와 실행 결과는 아래와 같다. 사용 방법이나 환경에 따라 검색어를 별도의 파일에서 읽어오게 바꿀수 있다.
결과를 저장해야 한다면 Response 값을 Dataframe으로 변환하여 DB나 엑셀 등으로 저장할 수 있다.
[검색 Code 본문]
# Naver API 이용 기본 import
import os
import urllib.request
from furl import furl
import json
import math
from time import sleep
import datetime
from datetime import datetime
# Naver API KEY
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
# MAIN
def Set_Search():
json_result = []
req_query = ["코로나", "부동산"] # 검색어 설정
req_display = '10' # 10개의 결과만 출력
req_sort = 'date' # 날짜순으로 정렬
req_target = ['news'] # 네이버 뉴스
Search_main(req_target, req_query, req_display, req_sort, json_result)
def Search_main(req_target, req_query, req_display, req_sort, json_result):
for target_url in req_target: # 검색섹션을 정한다
json_result.clear()
for target_query in req_query: # 검색 키워드를 정한다
target_query = target_query.rstrip('\n')
print("\nKeyword is " + target_url + "_" + target_query + ".......")
json_search = Set_Search_Option(target_url, target_query, 1, req_display, req_sort)
if (json_search == None):
json_result.append({'Keyword': "", 'Title': "", 'Description': "", 'Link': "", 'Date': ""})
continue
for post_data in json_search['items']: # 검색 결과를 화면으로 출력
print("Title : " + post_data['title'])
print("Summary : " + post_data['description'])
print("Link : " + post_data['link'])
# 검색 결과를 얻어옴
def Set_Search_Option(target_url, search_keyword, page_start, display, sort):
sleep(0.1)
url = furl('https://openapi.naver.com/v1/search/' + target_url)
url.args['query'] = search_keyword
url.args['display'] = display
url.args['sort'] = sort
url.args['start'] = page_start
print(url)
ret_data = Get_Search_Result(url)
if (ret_data == None):
return None
else:
return json.loads(ret_data)
# 검색 요청 보냄
def Get_Search_Result(req_url):
request = urllib.request.Request(req_url)
request.add_header("X-Naver-Client-Id", client_id)
request.add_header("X-Naver-Client-Secret", client_secret)
try:
response = urllib.request.urlopen(request)
rescode = response.getcode()
if (rescode == 200):
return response.read().decode('utf-8')
except Exception as e:
print(e)
print("Error Code:" + str(req_url))
return None
Set_Search()
[결과]
네이버 검색 API에 대한 보다 자세한 정보는 아래 사이트에서 확인 할 수 있다.
'Programming > Project' 카테고리의 다른 글
파이썬으로 홈택스 사업자등록상태조회 프로그램 만들기 (0) | 2020.05.29 |
---|---|
네이버 검색API로 키워드 수집(with Python) (0) | 2020.04.29 |
네이버 Open API 로 단축 URL 생성하기 (0) | 2020.03.10 |
파이썬 & Nmap 으로 Anonymous FTP 찾기 (0) | 2020.03.09 |
네이버 파파고 API로 번역 프로그램 만들기 by Python (0) | 2020.02.26 |