반응형

트렌드를 파악하기 위해 네이버에서 데이터랩에서 제공하는 API 중 하나인 쇼핑 인사이트 API를 사용해보았습니다.

막상 사용하려 소스코드를 확인해보니 requests 모듈이 아닌 urllib 모듈이여서 사용하기 난감했습니다.

제가 평소에 requests 모듈에 친숙해 있기 때문이였죠. (requests 모듈은 알아두면 두고두고 쓸데가 많습니다.)

그래서 추후에 또 사용할 수도 있어서 이번 기회를 통해 urllib에서 requests 모듈로 변경해서 사용해보자고 생각했습니다.

 

  원본 소스코드

#-*- coding: utf-8 -*-
import os
import sys
import urllib.request
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
url = "https://openapi.naver.com/v1/datalab/shopping/categories";
body = "{\"startDate\":\"2017-08-01\",\"endDate\":\"2017-09-30\",\"timeUnit\":\"month\",\"category\":[{\"name\":\"패션의류\",\"param\":[\"50000000\"]},{\"name\":\"화장품/미용\",\"param\":[\"50000002\"]}],\"device\":\"pc\",\"ages\":[\"20\",\"30\"],\"gender\":\"f\"}";

request = urllib.request.Request(url)
request.add_header("X-Naver-Client-Id",client_id)
request.add_header("X-Naver-Client-Secret",client_secret)
request.add_header("Content-Type","application/json")
response = urllib.request.urlopen(request, data=body.encode("utf-8"))
rescode = response.getcode()
if(rescode==200):
    response_body = response.read()
    print(response_body.decode('utf-8'))
else:
    print("Error Code:" + rescode)

 

API에 대한 사용방법 등 상세한 설명은 아래 링크로 달아두었습니다.

쇼핑인사이트 API 사용법

 

쇼핑인사이트 - Datalab

쇼핑인사이트 쇼핑인사이트 개요 개요 쇼핑인사이트 API 개요 쇼핑인사이트 API는 네이버 데이터랩의 쇼핑인사이트를 API로 실행할 수 있게 하는 RESTful API입니다. 네이버 통합검색의 쇼핑 영역과

developers.naver.com

 

 

  수정된 소스코드 (requests 모듈)

import requests
import json
import pprint

####################################
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
####################################

url = "https://openapi.naver.com/v1/datalab/shopping/categories"

payload = {"startDate": "2017-08-01",
           "endDate": "2017-09-30",
           "timeUnit": "month",
           "category": [
               {"name": "패션의류",
                "param": ["50000000"]},
               {"name": "화장품/미용",
                "param": ["50000002"]}],
           "device": "pc",
           "ages": ["20", "30"],
           "gender": "f"}

headers = {"X-Naver-Client-Id": client_id, "X-Naver-Client-Secret": client_secret, "Content-Type": "application/json"}
res = requests.post(url, data=json.dumps(payload), headers=headers)

print(res.status_code)
aaa = json.loads(res.text)
pprint.pprint(aaa)

 

  소스코드 실행 결과 (requests 모듈)

위 소스를 실행하면 아래와 같은 가독성 있는 결과를 얻을 수 있습니다.

 

내용이 유용하셨나요? 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

caul334@gmail.com

반응형
반응형

주식 공부를 시작하고 나서 어떻게 할 지 몰라 답답했는데

사경인 회계사가 추천한 '주식시장을 이기는 작은 책'을 읽던 중 '이 책이 하라는 방법으로 시작해보자' 라고 생각했습니다.

 

그래서 가장 먼저 해보자고 마음 먹은게

전자공시시스템에서 제공하는 API를 이용하여 대한민국 모든 상장사의 재무제표 데이터를 데이터베이스에 수집하기로 했습니다.

 

  첫번째 단계

그것을 실행하기 위한 첫 번째 단계로 해야 할 게 주식시장에서 거래되고 있는 상장사 리스트 뽑기입니다.

시작하자마자 수 많은 시행착오를 만났는데 그 중 첫번째는 Open Dart API에서 모든 상장사 리스트를 뽑으려 했으나

거래되지 않고 상장 폐지된 회사까지 전부 불러와서 어떻게 할까 고민을 하고 있었는데

예전에 증권 API를 사용했던 기억이 떠올라서

키움증권에서 제공하는 API를 이용하여 주식시장에서 현재 거래되고 있는 모든 상장사(코스피, 코스닥)의 리스트를 뽑을 수 있었습니다.

 

  두번째 단계

두번째 단계로 고려해야할게 증권사 API를 통해 뽑은 상장사의 이름을 가지고 Open Dart API를 이용하여 재무제표를 뽑는 것입니다.

하지만 이 역시 시행착오가 있었습니다. 증권사에서 사용하는 상장사의 이름과 Dart 에서 사용하는 이름이 다르다는 문제였습니다.

예를들면) 증권 API를 사용해서 뽑은 리스트에는 '기아차'라고 되어 있는데 Dart에서는 '기아자동차'라는 것들이지요.

이것도 역시 고민하니 해결책이 보였는데

해결책은 증권사에서 사용하는 주식종목번호(stock_code)를 사용하는 것입니다.

주식종목번호는 Dart에서도 정보를 가지고 있고 증권사는 당연히 가지고 있으니 그 번호를 가지고 하나의 정보로 합쳐야합니다.

참고로 주식종목번호 상장사 한개마다 하나씩 부여되는 고유번호기 때문에 중복될 일이 없습니다.

 

결과

 

내용이 유용하셨나요? 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

반응형

+ Recent posts