[크롤링][open api] - 크롤링으로 손쉽게 이미지를 얻어보자(2)

yeom yaloo·2022년 8월 5일
0


들어가기에 앞서

해당 포스팅은 "파이썬 생활미락형 프로젝트 - 김효실"님의 책을 보고 작성되었음을 알립니다.


OpenAPI 문서를 보는 방법

서비스 구성요소 3가지
1. 프론트 엔드(front - end)
2. 백엔드(back - end)
프론트엔드와 백엔드의 인터페이스(interface)

서비스 구성요소에 관한 간단한 설명

  • 프론트 엔드는 화면 구성을 처리합니다. (계좌이체 화면)
  • 백엔드는 화면에 보여줄 정보를 처리합니다.(이체 금액 연산과 각각의 정보 업데이트)
  • 프론트엔드가 백엔드에 요청할 때 특정 규칙에 맞춰 요청하는데 이때 이에 맞게 동작하는 인터페이스가 API(Application Programming Interface)입니다.

OpenAPI?

  • OpenApi 제공처에서는 백엔드를 만들어 놓고, 그 백엔드를 이용하는 방법을 제공합니다.
  • 결과적으로 OpenAPI를 사용하는 개발자는 백엔드 주소와 사용 규칙만 알면, 백엔드의 자원을 이용할 수 있게 되며 이는 프론트엔드만 개발하면 된다는 의미가 된다.

백엔드 사용법

  • 대부분의 제공처 가이드에 백엔드 사용법을 제공하고 있습니다.

클라이언트가 서버에게(요청), 서버가 클라이언트에게(응답)

  • 요청(Request) - 어디로, 어떻게 요청하는지 지술
  • 응답(Response) - 어떤 결과가 전달되는지 기술

요청에 대한 상태를 나타내는 두 가지 오류

  1. HTTP 상태 코드 오류
    이는 HTTP 프로토콜 사용시에 모두 공통으로 적용되는 응답 코드이다.
  2. response 값에 오류 정보를 담은 오류 코드
    이는 OpenAPI를 제공하는 제공사마다 다르다.

HTTP 상태 코드
200 - 성공
300 - 리다이렉트(대게는 성공)
400 - 클라이언트 과실 실패
500 - 서버 과실 (이 경우는 대참사...😂)


1.4 구현하기

구현 순서
1. 카카오 이미지 검색 OpenAPI 호출하기
2. 이미지 파일 저장하기
3. 전체 코드 완성하기

카카오 이미지 검색 OpenAPI 호출

import requests
import json

url = "https://dapi.kakao.com/v2/search/image"

headers = {
    "Authorization": "KakaoAK REST API키를 넣어주세요."
}

data = {
    "query": "가오나시"
}

#이미지 검색 요청
response = requests.post(url,headers=headers, data=data)

#요청 실패시,
if response.status_code != 200:
    print("error! because ", response.json())
else:
    cnt = 0
    for i in response.json()['documents']:
        print(f"[{cnt}th] image_url = ", i['image_url'])
        #저장을 위하 파일명 설저
        cnt += 1
  • request에 필요한 정보들은 딕셔너리 형태로 키:값으로 구성해 넘겨줍니다.
  • 요청은 post 형식으로 넘겨 줍니다.(해당 데이터의 사용에 따라서 get, post... 등등으로 http 메소드는 다양하게 사용됩니다.)
  • 이때 요청에 실패하면 해당 실패 메시지가 json 형식으로 받아 출력하게 됩니다
    error! because {'errorType': 'AccessDeniedError', 'message': 'wrong appKey(${개인키}) format'}
  • 요청을 성공하면 for문으로 데이터에 하나씩 접근해 줍니다.

저장

저장은 앞서 살펴본 방식을 함수로 만들어 사용해주면 됩니다.

profile
즐겁고 괴로운 개발😎

0개의 댓글