네이버 API

정의

  1. ‘API’란 Application Programming Interface의 약자로서 이용자가 본인의 애플리케이션 등에서 회사가 제공하는 기술을 사용하기 위한 인터페이스를 의미하며, ‘API서비스’란 회사가 그와 같은 API를 이용자에게 제공하는 것을 지칭합니다.

  2. ‘이용자’란 네이버 서비스(http://www.naver.com)의 회원으로서 본 약관에 따라 회사와 이용계약을 체결하고 회사가 제공하는 API서비스를 이용하는 자를 말합니다.

  3. ‘애플리케이션 등’이라 함은 이용자가 API서비스를 적용시키고자 하는 이용자의 애플리케이션, 프로그램 또는 웹사이트 등을 의미합니다.

  4. ‘개발자센터’라 함은 회사의 API서비스 제공 웹페이지(https://developers.naver.com)를 말합니다.

  5. ‘클라이언트 아이디’라 함은 API를 사용하고자 하는 어플리케이션 등이 API서비스의 이용 승낙을 받은 이용자의 애플레이케이션 등인 것을 식별할 수 있도록 회사가 이용자에게 할당하는 고유한 인증 값을 의미합니다.
    [출처: 네이버]

등록 방법

  1. 네이버 개발자 센터에 간다
  2. 어플리케이션 등록 및 이름 등록을 한다.
    3, 사용 API를 찾는다.
    4, WEB 설정을 해준다.
    5, CLIENT ID, CLIENT SECRET을 기억해준다.

urllib: http 프로토콜에 따라서 서버의 요청/ 응답을 처리하기 위한 모듈

urllib.request: 클라이언트의 요청을 처리하는 모듈

urllib.parse : url 주소에 대한 분석

검색: 블로그 (BLOG)

import os
import sys
import urllib.request

client_id = "1qs0o9agF8vgtGeSHsai"
client_secret = "T7Pi006y4I"

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)

url = "https://openapi.naver.com/v1/search/blog?query=" + encText # json 결과
가장 중요한 코드라고 생각한다. blog인가 shop,book, movie, cafearticle,encyc에 따라서 검색할 종목이 바뀐다.

그다음 encText = urllib.parse.quote("&&") 부분에 &&에 무엇을 찾을 것인가 입력을 해줘야한다.
예를 들어 몰스킨을 찾고 싶다면

encText = urllib.parse.quote("몰스킨")

으로 검색하면 된다.

gen_search_url

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)
    param_disp = "&display=" + str(disp_num)
    
    return base + node + param_query + param_start+ param_disp

get_result_onepage()

import json
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 Requset Success" % datetime.datetime.now())
    return json.loads(response.read().decode("utf-8"))
    

get_fields()

import pandas as pd

def get_fields(json_data):
    title = [each["title"] for each in json_data["items"]]
    link = [each["link"] for each in json_data["items"]]
    lprice = [each["lprice"] for each in json_data["items"]]
    mall_name = [each["mallName"] for each in json_data["items"]]
    
    result_pd = pd.DataFrame({
        "title" : title,
        "link" : link,
        "lprice" : lprice,
        "mall" : mall_name 
    }, columns =["title","lprice","link","mall"])
    return result_pd

시각화

plt.figure(figsize=(15,6))
sns.countplot(
    result_mol["mall"],
    data=result_mol,
    palette="RdYlGn",
    order= result_mol["mall"].value_counts().index
)
plt.xticks(rotation=90)
plt.show()

시각화를 하기 위한 아래와 같은 기본 코드를 작성해준다.
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns

print("Matplotlib version", matplotlib.version)
%matplotlib inline
%config InlineBackend.figure_format = 'retina'


네이버 API를 통해 간단하게 검색할 대상과 검색 종목을 알 수 있었다.
멀고도 험한 데이터사이언티스트의 길을 걷고 있는데,,하루 빨리 성장해서 좋은 데이터과학자로 거듭나고싶다;)

profile
문과생 데이터사이언티스트되기 프로젝트

0개의 댓글