Python/파이썬 웹 크롤러
파이썬(Python): 네이버 밴드(Band) API
컴닥
2021. 6. 20. 12:21
반응형
[개발자]
https://band.us/에 접속해 하단의 개발자 메뉴에 들어간다.
[OPEN API]
[서비스 등록]
[내 서비스 등록]
[서비스 등록]
Redirect URI는 아무 거나 넣어도...
[서비스 확인]
등록을 마치면 내 서비스 목록에서 서비스를 확인할 수 있다.
[Access Token]
서비스를 클릭하면 자세한 정보를 알 수 있다.
밴드 API에 접근하기 위해서는 Access Token이 필요하다.
[밴드 목록 조회]
내가 속한 밴드에 접근하기 위해서는 밴드 키가 필요하다.
밴드 키를 알기 위해서는 밴드 목록을 조회해야 한다.
자세한 것은 아래 문서에 잘 나와 있다.
https://developers.band.us/develop/guide/api/get_bands
# 파이썬 기본 라이브러리 urllib를 사용한 코드
import json
from pprint import pprint
from urllib import request
token = '*Access Token*'
def get_bands():
url = f'https://openapi.band.us/v2.1/bands?access_token={token}'
req = request.Request(url)
res = request.urlopen(req)
decoded = res.read().decode("utf8")
json_dict = json.loads(decoded)
return json_dict
pprint(get_bands())
# 결과
{'result_code': 1,
'result_data': {'bands': [{'band_key': '*밴드 키*',
'cover': '*커버 주소*',
'member_count': 1,
'name': '*밴드 이름*'},]}}
GET 방식의 API들은 위의 코드를 형식에 맞춰 약간만 변형하면 된다.
[글 쓰기]
POST 방식을 알아보자.
위 코드에 다음 코드를 추가하자.
from urllib import request, parse
def create_post(band_key, content, do_push=True):
url = 'https://openapi.band.us/v2.2/band/post/create'
req = request.Request(url)
data = {'access_token': token, 'band_key': band_key, 'content': content, 'do_push': do_push}
post_data = parse.urlencode(data).encode('UTF-8')
res = request.urlopen(req, post_data)
decoded = res.read().decode('UTF-8')
json_dict = json.loads(decoded)
return json_dict
pprint(create_post('*band_key*', 'TEST'))
# 결과
{'result_code': 1,
'result_data': {'band_key': '**',
'post_key': '**'}}
자세한 것은 다음 문서에...
https://developers.band.us/develop/guide/api/write_post
requests
외부 라이브러리인 requests를 이용하는게 더 편하다.
import json
import requests
token = '*Access Token*'
def get_bands():
url = f'https://openapi.band.us/v2.1/bands?access_token={token}'
with requests.get(url) as resp:
json_dict = json.loads(resp.text)
return json_dict
def create_post(band_key, content, do_push=True):
url = 'https://openapi.band.us/v2.2/band/post/create'
data = {'access_token': token, 'band_key': band_key, 'content': content, 'do_push': do_push}
with requests.post(url, data) as resp:
json_dict = json.loads(resp.text)
return json_dict
참고로 겟과 포스트의 차이는...
https://hongsii.github.io/2017/08/02/what-is-the-difference-get-and-post/
반응형