[Zero-Base DS]스터디노트_네이버 API

HAHAHAEUN·2024년 4월 16일
post-thumbnail
  • 기본 검색 API 블로그 검색 구현 예제

    import os
    import sys
    import urllib.request
    client_id = "YOUR_CLIENT_ID"
    client_secret = "YOUR_CLIENT_SECRET"
    encText = urllib.parse.quote("검색할 단어")
    url = "https://openapi.naver.com/v1/search/blog?query=" + encText # JSON 결과 
    > # url = "https://openapi.naver.com/v1/search/blog.xml?query=" + encText # XML 결과
    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)
    rescode = response.getcode()
    if(rescode==200):
      response_body = response.read()
      print(response_body.decode('utf-8'))
    else:
      print("Error Code:" + rescode)

(예제)
Naver API 사용하여 쇼핑몰에서 판매하는 "몰스킨" 검색하기

1. gen_search_url()

  • 기본예제 중 아래항목에 해당하는 부분을 만들어줌
    encText = urllib.parse.quote("검색할 단어")
    url = "https://openapi.naver.com/v1/search/shop?query=" + encText # JSON 결과
def gen_search_url(api_node, search_text, start_num, disp_num):
    base = "https://openapi.naver.com/v1/search"
    node = "/" + api_node + ".json"
    param_query = "?query=" + urllib.parse.quote(search_text)
    param_start = "&start=" + str(start_num) 
    # documents에는 integer로 나와있지만, 문자열과 함께 작업해야하므로 str로 바꿔줌
    param_disp = "&display" + str(disp_num)

    return base + node + param_query + param_start + param_disp

gen_search_url("shop", "TEST", 10, 3)

2. get_result_onpage()

import json
# json : 정보 dic형태로 저장됨
import datetime


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("shop", "몰스킨", 1, 5)  # 1번째 page부터 시작해서 5개
one_result = get_result_onpage(url)

[자료 출처]https://zero-base.co.kr/

profile
할 거면 제대로 하자

0개의 댓글