‘API’란 Application Programming Interface의 약자로서 이용자가 본인의 애플리케이션 등에서 회사가 제공하는 기술을 사용하기 위한 인터페이스를 의미하며, ‘API서비스’란 회사가 그와 같은 API를 이용자에게 제공하는 것을 지칭합니다.
‘이용자’란 네이버 서비스(http://www.naver.com)의 회원으로서 본 약관에 따라 회사와 이용계약을 체결하고 회사가 제공하는 API서비스를 이용하는 자를 말합니다.
‘애플리케이션 등’이라 함은 이용자가 API서비스를 적용시키고자 하는 이용자의 애플리케이션, 프로그램 또는 웹사이트 등을 의미합니다.
‘개발자센터’라 함은 회사의 API서비스 제공 웹페이지(https://developers.naver.com)를 말합니다.
‘클라이언트 아이디’라 함은 API를 사용하고자 하는 어플리케이션 등이 API서비스의 이용 승낙을 받은 이용자의 애플레이케이션 등인 것을 식별할 수 있도록 회사가 이용자에게 할당하는 고유한 인증 값을 의미합니다.
[출처: 네이버]
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("몰스킨")
으로 검색하면 된다.
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
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"))
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를 통해 간단하게 검색할 대상과 검색 종목을 알 수 있었다.
멀고도 험한 데이터사이언티스트의 길을 걷고 있는데,,하루 빨리 성장해서 좋은 데이터과학자로 거듭나고싶다;)