네이버 API
예제 코드
# 네이버 검색 API 예제 - 블로그 검색
import os
import sys
import urllib.request
client_id = "ID"
client_secret = "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)

검색 : 책(book)
# 네이버 검색 API 예제 - 블로그 검색
import os
import sys
import urllib.request
client_id = "ID"
client_secret = "secret"
encText = urllib.parse.quote("파이썬")
url = "https://openapi.naver.com/v1/search/book?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)

검색 : 카페(cafearticle)
# 네이버 검색 API 예제 - 블로그 검색
import os
import sys
import urllib.request
client_id = "ID"
client_secret = "secret"
encText = urllib.parse.quote("파이썬")
url = "https://openapi.naver.com/v1/search/cafearticle?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)

몰스킨 검색
# 네이버 검색 API 예제 - 블로그 검색
import os
import sys
import urllib.request
client_id = "ID"
client_secret = "secret"
encText = urllib.parse.quote("몰스킨")
url = "https://openapi.naver.com/v1/search/shop?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)

(1) gen_search_url()
- 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
gen_search_url('shop', 'TEST', 10, 3)

(2) get_result_onpage()
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 Request Success" % datetime.datetime.now())
return json.loads(response.read().decode("utf-8"))
url = gen_search_url('shop', '몰스킨', 1, 5)
one_result = get_result_onpage(url)
one_result

(3) 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
get_fields(one_result)

(4) delete_tag()
def delete_tag(input_str):
input_str = input_str.replace("<b>", "")
input_str = input_str.replace("</b>", "")
return input_str
import pandas as pd
def get_fields(json_data):
title = [delete_tag(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
url = gen_search_url('shop', '몰스킨', 1, 5)
json_result = get_result_onpage(url)
pd_result = get_fields(json_result)
pd_result

(5) actMain()
result_mol = []
for n in range(1, 1000, 100):
url = gen_search_url('shop', '몰스킨', n, 100)
json_result = get_result_onpage(url)
pd_result = get_fields(json_result)
result_mol.append(pd_result)
result_mol = pd.concat(result_mol)
(6) 시각화
import warnings
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib import rc, font_manager
get_ipython().run_line_magic('matplotlib', 'inline')
plt.rcParams['font.family'] = 'Malgun Gothic'
warnings.simplefilter(action='ignore', category=FutureWarning)
plt.figure(figsize=(15,6))
sns.countplot(
result_mol['mall'],
data = result_mol,
palette="RdYlGn",
order = result_mol['mall'].value_counts().index
)
plt.show()
