일단 만드는 Django(7)

yoodeit·2022년 6월 25일
  1. API
    네이버든 카카오든 API는 문서가 있으니까 그거 보면서 하라는 대로만 하면 됩니다.
    네이버를 예로 들면은, 오픈 API 이용 신청부터 해야 합니다.

    애플리케이션 이름 작성해주고, 사용 API 고르고, WEB설정 해주시고, http:/127.0.0.1:8000 넣어주시면 됩니다.
    Client ID, Secret Key를 받을 수 있습니다.

이제 API를 쓰면 되는데,
네이버 서버한테 요청을 보내야지 응답을 받을 수 있습니다. 그 응답은 XML 혹은 JSON 포맷으로 응답을 받는데, 요새는 JSON이 대세입니다.
다음은 요청변순데, 필수도 있고 선택도 있습니다. 구현하고 싶은 기능에 따라 다양하게 활용하면 될 것 같습니다.

naver developers에 알려진 블로그 검색 구현 방법은 다음과 같습니다.

# 네이버 검색 API예제는 블로그를 비롯 전문자료까지 호출방법이 동일하므로 blog검색만 대표로 예제를 올렸습니다.
# 네이버 검색 Open API 예제 - 블로그 검색
import os
import sys
import urllib.request
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
encText = urllib.parse.quote("검색할 단어")
url = "https://openapi.naver.com/v1/search/blog?query=" + encText # json 결과
# url = "https://openapi.naver.com/v1/search/blog.xml?query=" + encText # xml 결과
request = urllib.request.Request(url)
request.add_header("X-Naver-Client-Id",client_id)
request.add_header("X-Naver-Client-Secret",client_secret)
response = urllib.request.urlopen(request)
rescode = response.getcode()
if(rescode==200):
    response_body = response.read()
    print(response_body.decode('utf-8'))
else:
    print("Error Code:" + rescode)

일단

import urllib.request

이거는 특정 Url에 request를 날릴 수 있게 함.

client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"

그리고 이거는 api사용신청해서 받은 id, secret key 입력하는 칸.

encText = urllib.parse.quote("검색할 단어")
url = "https://openapi.naver.com/v1/search/blog?query=" + encText # json 결과
# url = "https://openapi.naver.com/v1/search/blog.xml?query=" + encText # xml 결과

그리고 url에 검색할 단어 입력과 그에 따른 url 변화

request = urllib.request.Request(url)
request.add_header("X-Naver-Client-Id",client_id)
request.add_header("X-Naver-Client-Secret",client_secret)

request 객체에 header 부분에 client id를 붙여서 요청하게 된다.

response = urllib.request.urlopen(request)
rescode = response.getcode()

그리고 response객체에는 반환받은 값을 넣어주고, getcode()로 우리가 보낸 요청이 잘 갔는지를 확인할 수 있다.
인터넷에 HTTP 상태 코드를 검색해보면 100번대, 200번대, 300번대, 400번대, 500번대별로 request에 대한 반응이 어떤 반응인지를 알 수 있다.

if(rescode==200):
    response_body = response.read()
    print(response_body.decode('utf-8'))
else:
    print("Error Code:" + rescode)

그래서 제대로 작용했으면 if밑의 기능을 수행해라,(한글은 decode ut-8을 써야 한다) 아니면 error code를 출력해라 라고 조건문을 작성해주면 된다.

검색결과를 json 형식으로 저장하고 싶을 때는 다음과 같이.

import json

resdata = reponse_body.decode('utf-8')
with open('movie.json', 'w', encoding='UTF-8-sig') as file :
	file.write(json.dumps(resdata, ensure)ascii=False))

movie.json 이라는 새로운 파일을 열 건데, 그 파일에 뭔가를 쓸거고, 한국말이 들어가니까 UTF-8 설정해준다.
json.dumps로 가져온 데이터를 파일에 쓸거다. 아스키라 하는 글자형식은 False로 해서 한글 깨지는 일이 없도록 한다.

profile
Yoodeit

0개의 댓글