-
파이썬(Python): 네이버 밴드(Band) APIPython/파이썬 웹 크롤러 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_postrequests
외부 라이브러리인 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/반응형