근황 토크 및 자유게시판

[네이버 검색 api] 052 에러

scone 2022. 8. 21. 15:14

 

[그림 1] : 주소를 만들어준 함수(gen search)와 결과를 가져오는 함수(get result)를 각각 만들어 사용한다.

아이디와 비밀번호는 개인정보 이므로 가렸습니다.

 

[그림 2] 에러 코드

052 에러가 발생하여 네이버 document 에 들어가 관련 에러코드를 확인하려 하였다.

 

document 주소 : https://developers.naver.com/docs/serviceapi/search/kin/kin.md#%EC%A7%80%EC%8B%9DiN

 

지식 iN - Search API

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

developers.naver.com

 

에러코드 번호는 찾을 수 없었다.

다만 내 코드가 뭐가 잘못되었는지 유심히 보고, 네이버 document를 유심히 본 결과 답을 찾을 수 있었다.

 

 

[그림 3] GET 메서드

검색 엔진이 v1인데 오타로 vi 로 작성하여 발생한 문제였다.

이제 보니 에러코드에도 'vi' 라고 적혀있다.

 

 

검색 엔진을 틀리는건 종종 발생한 에러였다.

구글링하여 과거 검색 엔진 사용 코드를 검색하다보면 v3로 많이들 적어놓았는데. 

지금은 v3가 없어졌기 때문이다.

 

 

document 의 유용함을 새삼 깨닫게 되는 경험이었다.

 

 

고친 코드  ( 지식인에서 파이썬을 검색해서 결과를 10개 가져온다. )

(start = 10, disp = 10 )

 

import urllib.request
import json
import datetime
def gen_search_url(api_node, search_text, start_num,disp_num):
    base ="https://openapi.naver.com/vi/search"
    node = "/"+ api_node + ".json"
    param_query = "?query="+urllib.parse.quote(search_text)
    param_start = "&start="+str(start_num)
    param_disp = "&display="+str(disp_num)
    return base + node + param_query + param_start + param_disp
def get_result_onpage(url):
    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)
    print('[%s] Url Request Success' % datetime.datetime.now())
    return json.loads(response.read().decode('utf-8'))
# 지식인에다가 검사
url = gen_search_url('kin','파이썬',10,10)
one_result = get_result_onpage(url)
one_result

 

[ 네이버 API 관련 알아야할 필수 정보 ]

 

  • 검색 결과는 한번  검색에 1000건으로 제한된다.
  • 검색 api, 일일 호출 허용량은 무료 기준으로 2,5000 회이다.

 

검색결과가 한번 검색에 1000건 이기 때문에 특정 검색어의 기간에 따른 모든 데이터를 가져오기 위해서는 세부 검색을 최대한 잘 활용해야 했었다.

 

[그림 4] 네이버 검색 api 스펙 변경 관련 공지 (출처 : https://developers.naver.com/notice/article/10000000000030672852 )

출간 시작일과 출간 종료일, 카테고리 검색 등이 막혔기 때문에 혹시라도 구글링 해서 과거 코드를 복사 붙여넣기 하려는 코더 분들은 참고하셔야겠다.

 

 

 

 

네이버 개발자 포럼을 돌아다니다 보면 파파고 번역 api를 쓰다가 고통받는 분들이 많이들 보인다.

10,000글자/일 이라고 적혀있는걸 보고 검색 api 때 처럼 10,000 번 조회 해도 되겠지? 라고 생각하시는 분들이 많은 것 같던데 이게 횟수가 아니라 글자여서, 아마도 띄어쓰기를 포함한 byte 기준일 것이다. 참고 하셔야할 것 같다.

 

 

여기 링크에 네이버 api 별 호출 제한이 적혀있다.

 

https://developers.naver.com/products/intro/plan/plan.md

 

네이버 오픈 API 목록 - INTRO

네이버 오픈 API 목록 NAVER Developers - API 소개 네이버 오픈API 목록 및 안내입니다. 네이버 오픈 API 목록 API명 설명 호출제한 검색 네이버 블로그, 이미지, 웹, 뉴스, 백과사전, 책, 카페, 지식iN 등 검

developers.naver.com