트렌드를 파악하기 위해 네이버에서 데이터랩에서 제공하는 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에 대한 사용방법 등 상세한 설명은 아래 링크로 달아두었습니다.
수정된 소스코드 (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
'IT > Python' 카테고리의 다른 글
[Python] Selenium Wire 사용 시 "주의요함" 메시지 해결 방법 (0) | 2024.10.11 |
---|---|
[Python] 파이썬을 이용하여 아이폰 사진 파일 이름을 찍은시간으로 변경하고 백업하는 방법 (6) | 2022.04.05 |
[Python] 정규표현식(Regex)으로 타임스탬프 형식의 파일 이름 변경하기 (8) | 2022.03.26 |
[Python] pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)") (8) | 2022.03.15 |
[WinError 32] 다른 프로세스가 파일을 사용 중이기 때문에 프로세스가 액세스 할 수 없습니다. (9) | 2022.03.14 |