AI와 함께 만든 ‘네이버 지식인 질문 검색기’ – API 키 200% 활용하기
지난 포스팅에서 네이버 개발자 센터를 통해 검색 API 키를 발급받는 과정을 소개해 드렸죠? 오늘은 그 ‘열쇠’를 가지고 실제로 지식인에서 어떤 질문들이 올라오는지 실시간으로 가져오는 나만의 “네이버 지식인 질문 검색기” 프로그램을 만들어보려 합니다. 1. 검색 api키로 할 수 있는 것들 API 키 하나만 있으면 할 수 있는 일이 정말 많습니다. 단순히 웹사이트만 뒤지는 게 아니라 네이버가 […]
지난 포스팅에서 네이버 개발자 센터를 통해 검색 API 키를 발급받는 과정을 소개해 드렸죠? 오늘은 그 ‘열쇠’를 가지고 실제로 지식인에서 어떤 질문들이 올라오는지 실시간으로 가져오는 나만의 “네이버 지식인 질문 검색기” 프로그램을 만들어보려 합니다.
1. 검색 api키로 할 수 있는 것들
API 키 하나만 있으면 할 수 있는 일이 정말 많습니다. 단순히 웹사이트만 뒤지는 게 아니라 네이버가 가진 방대한 데이터를 내 프로그램으로 가져올 수 있거든요.
- 다양한 검색 기능: 블로그, 뉴스, 책, 백과사전, 카페글, 지식인, 이미지, 쇼핑 정보 등
- 부가 기능: 성인 검색어 판별, 오타 변환, 전문 자료 검색 등
저는 이 중에서 지식인(Kin)을 선택했습니다. 내가 입력한 키워드에 대해 사람들이 요즘 어떤 고민을 하고 있는지 최신순으로 긁어모으는 프로그램을 만들어보겠습니다
✅아직 네이버 api키를 안받은 분들은 이전 포스팅을 참고하세요
네이버 개발자 센터 API 발급 방법 | 5분 만에 클라이언트 ID 받는 완벽 가이드
2. 네이버 지식인 질문 검색기 만들기 (feat. AI 협업)
코딩을 전혀 몰라도 걱정하실 필요 없습니다. 저도 이번엔 AI의 도움을 받아 아주 스마트하게 해결했거든요. 과정은 이렇습니다.
- 네이버 개발자 센터의
Documents > API > 검색 > 지식인페이지에 접속합니다. - 데이터 캡처: 화면에 나오는 요청 URL, 파라미터, 요청/응답 예시를 캡처합니다.
- AI에게 부탁하기: 캡처한 이미지들을 AI 도구에 입력하며 *”지식인 질문 결과 검색 코드를 만들어줘”*라고 요청합니다.
- 실행 및 수정: AI가 짜준 코드를 VS Code(Visual Studio Code)에 붙여넣고 실행해 봅니다.
처음엔 고정된 단어만 검색되길래, 제가 직접 단어를 입력할 수 있도록 ‘검색 입력 기능’을 추가해달라고 한 번 더 요청했더니 완벽한 코드가 완성되었습니다.
3. 완성된 파이썬(Python) 코드
import urllib.request
import json
# 네이버 개발자 센터에서 발급받은 키 입력
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
# 1. 사용자로부터 검색 조건 입력받기
keyword = input("어떤 질문이 궁금하신가요? : ")
count = input("몇 개의 결과를 보여드릴까요? (1~100): ")
print("\n정렬 방식을 선택해 주세요.")
print("1: 정확도순(sim), 2: 최신순(date), 3: 평점순(point)")
sort_input = input("번호 선택: ")
# 2. 입력된 번호를 API 전용 키워드로 변환
if sort_input == "2":
sort_method = "date"
sort_label = "최신순"
elif sort_input == "3":
sort_method = "point"
sort_label = "평점순"
else:
sort_method = "sim"
sort_label = "정확도순"
encText = urllib.parse.quote(keyword)
# 3. 요청 URL 설정 (입력받은 개수와 정렬 방식 반영)
url = f"https://openapi.naver.com/v1/search/kin.json?query={encText}&display={count}&sort={sort_method}"
request = urllib.request.Request(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)
if response.getcode() == 200:
data = json.loads(response.read().decode('utf-8'))
print("\n" + "="*50)
print(f"'{keyword}'에 대한 {sort_label} 검색 결과({count}개)입니다.")
print("="*50 + "\n")
if not data['items']:
print("검색 결과가 없습니다.")
else:
for i, item in enumerate(data['items'], 1):
title = item['title'].replace("<b>", "").replace("</b>", "")
description = item['description'].replace("<b>", "").replace("</b>", "")
print(f"[{i}] {title}")
print(f"링크: {item['link']}")
print(f"내용: {description}")
print("-" * 50)
else:
print(f"연결 실패! 에러 코드: {response.getcode()}")
except Exception as e:
print(f"오류가 발생했습니다: {e}")
4. 💡 이 코드는 어떻게 작동할까요?
1. 대화형 인터페이스 (Interactive Input)
프로그램이 일방적으로 결과를 내놓지 않습니다. 마치 비서처럼 “무엇을, 몇 개나, 어떤 순서로” 보여줄지 사용자에게 먼저 물어봅니다. input() 함수를 통해 프로그램 실행 중에 실시간으로 조건을 바꿀 수 있게 된 것이죠.
keyword = input("어떤 질문이 궁금하신가요? : ")
count = input("몇 개의 결과를 보여드릴까요? (1~100): ")
sort_input = input("번호 선택: ")
2. 똑똑한 번역기 역할 (Conditional Logic)
사용자가 “정확도순으로 해줘”라고 말하면 컴퓨터는 이해하지 못합니다. 그래서 사용자가 입력한 번호(1, 2, 3)를 네이버 API가 알아듣는 전용 코드(sim, date, point)로 바꿔주는 ‘통역’ 과정을 넣었습니다. 번호를 잘못 입력하더라도 기본값인 ‘정확도순’으로 작동하도록 설계해 안정성을 높였습니다.
if sort_input == "2":
sort_method = "date"
elif sort_input == "3":
sort_method = "point"
else:
sort_method = "sim"
3. 변신하는 주문서 (Dynamic URL)
이 부분이 코드의 꽃이라고 할 수 있습니다. 파이썬의 f-string 문법을 사용하여, 사용자가 입력한 값들에 따라 접속할 주소가 실시간으로 조립됩니다. 검색어, 개수, 정렬 방식이 합쳐져 네이버 서버로 날아가는 최종 주문서가 완성되는 순간입니다.
url = f"https://...&display={count}&sort={sort_method}"
4. 가독성을 높인 출력 (Enumerate)
단순히 리스트를 뿌려주는 것이 아니라 enumerate 함수를 사용해 검색 결과에 순번(1, 2, 3…)을 붙였습니다. 덕분에 수십 개의 결과를 불러와도 내가 보고 있는 질문이 몇 번째인지 한눈에 파악할 수 있어 훨씬 전문적인 프로그램 느낌을 줍니다.
for i, item in enumerate(data['items'], 1):
print(f"[{i}] {title}")
코드가 복잡해 보이지만, 알고 보면 아주 논리적입니다.
- 우체부와 통역사:
urllib는 인터넷을 통해 데이터를 실어 나르는 우체부이고,json은 네이버가 보낸 복잡한 데이터를 우리가 읽기 쉽게 번역해 주는 통역사입니다. - 안전한 출입증:
client_id와secret은 네이버 서버에 접속할 때 보여주는 신분증입니다. 이게 있어야 데이터를 안전하게 받아올 수 있죠. - 한글 변신 (Encoding): 인터넷 주소는 한글을 그대로 인식하지 못해 깨질 수 있습니다. 그래서
urllib.parse.quote를 사용해 컴퓨터가 이해하는 특수 주소로 바꿔주는 과정이 꼭 필요합니다. - 깔끔한 다듬기 (Replace): 결과값에 섞여 있는
<b>같은 강조 태그들을 지워줌으로써, 우리 눈에 깨끗한 텍스트만 보이게 정리했습니다.
위 코드는 최신순으로 보여주는데요. 아래와 같이 수정하면 정확도 순으로도 검색할 수 있습니다.
# 수정 전 (최신순)
url = f"https://openapi.naver.com/v1/search/kin.json?query={encText}&display=5&sort=date"
# 수정 후 (정확도순)
url = f"https://openapi.naver.com/v1/search/kin.json?query={encText}&display=5&sort=sim"
마치며
직접 만든 프로그램으로 지식인 질문을 실시간으로 확인하니 코딩이 더 이상 어렵게 느껴지지 않더군요. 이제는 문법을 외우는 시대가 아니라, AI에게 정확한 정보를 제공하고 내가 원하는 기능을 조리 있게 요청하는 능력이 더 중요한 시대인 것 같습니다.
여러분도 발급받은 API 키를 잠재우지 마시고, 오늘 한번 나만의 검색기를 만들어보시는 건 어떨까요?