일단 만드는 Django(7)

yoodeit·2022년 6월 25일
0
  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개의 댓글