본문 바로가기
문송충의 코딩하기/네이버 API

"스마트 워치" 네이버 쇼핑 결과 가져오기 With Naver API Python

by 동장군님 2020. 8. 29.
728x90
반응형

최근에 러닝을 시작해서 그런지 가장 사고 싶은 제품이 바로 스마트 워치이다. 아무래도 갤럭시 노트를 사용하다 보니 애플 워치보다는 이번에 새로 나온 갤럭시 워치 3 나 가격적인 측면에서는 넘사벽인 샤오미 워치에 관심을 갖고 있다. 그래서 이번에 네이버에서 제공하고 있는 쇼핑 API를 통해 네이버에서 스마트 워치를 검색했을 때 나오는 쇼핑 결과들을 파이썬으로 가져와 비교하도록 하겠다. 분석하고자 하는 내용은 간단하다. 스마트 워치에는 어떠한 브랜드들이 있는지, 스마트 워치 중 가장 비싼 제품은 어떤 건지, 브랜드별 평균 가격은 어떤지 보고자 한다. 

 

삼성닷컴 갤럭시 워치3

 

 


1. 네이버 오픈 API 신청

API를 사용하려면 항상 그랬듯이 먼저 API를 신청해야 한다. 아래 링크로 API를 신청하면 Client ID, Client Secret 값을 받을 수 있을 것이다. API 값만 받으면 바로 API를 사용할 수 있다. 

developers.naver.com/docs/search/shopping/

 

검색 API 쇼핑 검색 개발가이드

NAVER Developers - 검색 API 쇼핑 검색 개발가이드

developers.naver.com

2. 검색 결과 가져오기

스마트 워치 검색 결과 300개를 가져오도록 하겠다. 실제로 이 만큼이 있는지는 모르겠지만 그냥 다 추출하고 중복 제거를 하겠다. 그리고 필요한 칼럼은 제품명, 가격, 브랜드, 메이커 그리고 네이버에서 분류한 카테고리 1~3을 분류해서 뽑아보겠다. 

import os
import sys
import requests

client_id = "~"
client_secret = "~"
keywords="스마트 워치"

title=[]
price=[]
brand=[]
maker=[]
category1=[]
category2=[]
category3=[]

for i in range(1,4):
    print(i)
    header_parms ={"X-Naver-Client-Id":client_id,"X-Naver-Client-Secret":client_secret}
    api = f"https://openapi.naver.com/v1/search/shop.json?start={i}&display=100&sort=sim&query=" + keywords # json 결과
    res=requests.get(api,headers=header_parms)

    if(res.status_code==200):
        data =res.json()
        
        for u in data['items']:
            print(u['title'].replace('<b>','').replace('</b>',''))
            title.append(u['title'].replace('<b>','').replace('</b>',''))
            price.append(int(u['lprice']))
            brand.append(u['brand'])
            maker.append(u['maker'])
            category1.append(u['category1'])
            category2.append(u['category2'])
            category3.append(u['category3'])
            
import pandas as pd
df=pd.DataFrame([title,price,brand,maker,category1,category2,category3]).T
df.columns=['title','price','brand','maker','category1','category2','category3']
df2=df.drop_duplicates()
df2['price']=df2['price'].astype(int)

위 코드를 돌린 다음에 df2를 출력한다면 아래와 같은 결과를 받을 수 있다. 중복 제거를 한후 총 101개의 제품 정보를 받아볼 수 있다. 

 

 

 

 

 

 

3. 상세 분석

  • 스마트 워치 브랜드 수 : Total 16개 브랜드
df2['brand'].unique()

위 코드를 출력하면 아래와 같은 결과를 받아 볼 수 있다. 스마트 워치 브랜드가 이렇게 많은 지 처음 알았다. 삼성, 애플, 샤오미, 핏빗 정도만 알고 있었는데 스마트 워치 브랜드만 총 16개나 있다. 

'삼성', '코아', '갤럭시', '젤센', 'Apple', 'Haylou', '샤오미', '가민', '어메이즈핏', '스트로만', '하빗', 'XENO', '렘포', 'LIGE', '화미', '엑스핏', '핏빗', '나노', '브이텍', '화웨이'

 

  • 브랜드 별 평균 가격

 

샤오미는 정말 말도 안되게 싸다. 샤오미 살지 심각히 고민 중이다. 애플 스마트 워치 가격이 너무 저렴한데 이거는 애플워치 케이스 가격이 포함돼서 그런 것으로 보인다. 삼성/갤럭시 브랜드는 30만 원대로 나타나고 있는데 최근 나오는 갤럭시 워치3 는 45만 원으로 엄청나다. 화웨이는 뭔데 저렇게 비싼지 참...

brand_avg=df2.groupby('brand')['price'].sum()/df2.groupby('brand')['price'].count()
bavg=pd.DataFrame(brand_avg)

  • 가장 비싼 제품

가격 순으로 내림차순 정렬를 해봤더니 아니 당연히 가장 비싼 제품은 애플이 찍은 줄 알았는데 생각과 달리 갤럭시 제품이 1위를 기록했고, 무려 113만 원의 가격으로 판매되고 있었다. 크롤링이 잘못된 줄 알고 해당 제품의 링크를 가져와 들어가 봤는데 실제로 이 가격에 판매되고 있었다. 

df2.sort_values(by='price', ascending=False).head()

search.shopping.naver.com/detail/detail.nhn?cat_id=50000262&nv_mid=15478677559

 

삼성전자 삼성 갤럭시 워치 골프 에디션 46mm : 네이버쇼핑

품목 : 스마트워치네트워크 : 무선랜(WiFi)화면크기 : 1.3인치(3.3cm)방수기능 : 생활방수(IP68), 방수(5ATM)밴드형태 : 밴드교체형블루투스버전 : 블루투스4.2

search.shopping.naver.com

골프 에디션으로 출시 된 것 같은데 골프를 친다면 충분히 살 의향은 있을 것 같다. 이번 내용은 여기서 마무리하고 나중에 더 네이버 API 관련 알찬 내용으로 찾아오겠다. 

728x90
반응형

댓글