Web Crawling/Web Crawling ?

OPEN API 란 ?

js-kkk 2025. 2. 23. 17:10

2. Open API

2-1. Open API 개요

2-1-1. Open API란

💡공개적으로 사용할 수 있도록 제공되는 API(Application Programming Interface)로, 개발자가 표준화된 방법으로 특정 서비스나 데이터에 접근할 수 있게 한다.

2-1-2. Open API의 특징

  1. API 키(API Key), OAuth 등의 인증 방식을 사용한다.
  2. 사용량 제한, 호출 빈도 제한 등의 정책이 존재한다.
  3. API 사용 방법, 요청 및 응답 형식, 예제 코드 등 상세한 내용을 공식 문서로 제공한다.

2-1-3. Open API의 장점

  1. 표준화된 인터페이스로 빠르게 개발 가능하여 생산성이 향상된다.
  2. 필요한 데이터를 손쉽게 획득하여 서비스 개발에 활용할 수 있다.
  3. 데이터 제공자와 소비자 간의 협업과 혁신을 촉진한다.

2-2. Open API 사용법

2-2-1. API 문서 이해

  1. API 엔드포인트(Endpoint) : API에 접근하기 위한 URL 주소
  2. HTTP 메서드(Method)
    • GET: 데이터 조회
    • POST: 데이터 생성
    • PUT/PATCH: 데이터 수정
    • DELETE: 데이터 삭제
  3. 요청 파라미터(Parameter) : 쿼리 스트링 또는 요청 본문에 포함되는 데이터
  4. 응답 형식 : JSON, XML 등으로 데이터 반환
  5. 인증 방법
    • API Key: 요청 헤더나 파라미터에 포함
    • OAuth: 토큰 발급 후 인증에 사용

2-2-2. API 테스트 방법

  1. API 테스트 도구 사용 (Postman 등)
    1. GUI 환경에서 요청을 구성하고 응답을 확인한다.
    2. 요청 내역 저장 및 공유 가능하다.
  2. cURL 명령어 사용
    1. 터미널에서 HTTP 요청을 실행하여 테스트한다.
    2. 스크립트나 배치 파일에 활용 가능하다.
  3. 브라우저를 통한 간단한 테스트
    1. GET 요청의 경우 브라우저 주소창에 엔드포인트와 파라미터 입력하여 테스트 할 수 있다.

2-2-3. 공공 데이터 포털 API 사용 방법

  1. 공공 데이터 포털 사이트에서 회원 가입 후 API 신청하여 키를 발급받는다.
  2. 제공되는 API 매뉴얼에서 요청 방법, 파라미터, 응답 형식 등을 확인한다.
  3. 문서에 명시된 대로 API를 호출하고 응답을 확인한다.

2-3. API 크롤러

2-3-1. API 크롤러 만들기

  1. 개발 환경을 설정한다.
    1. 프로그래밍 언어를 선택한다. (python)
    2. 크롤링에 필요한 라이브러리를 설치한다. (requests, json 등)
    3. API key와 엔드 포인트를 설정한다. (이때, API key는 유출되면 안되는 정보이므로 환경 변수나 설정 파일에 담아 안전하게 보관해야 한다.)
  2. API 요청 함수를 작성한다.
params = {
    "key": "{key}",
    "targetDt": "20241120"
}
  • HTTP 요청 보내기 
import requests

url = "http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json"

# API 요청
response = requests.get(url, params=params)

# 결과 출력
if response.status_code == 200:
    print(response.json())
else:
    print(f"Error: {response.status_code}")
  • 응답 처리
if response.status_code == 200:
    data = response.json()  # JSON 응답 파싱
else:
    print(f"Error Code: {response.status_code}")

 

 

 

 3. 받아온 데이터를 저장 및 처리한다.

  • 데이터 검증
if bool(data) is True:
    items = data['boxOfficeResult']['dailyBoxOfficeList']

if bool(items) is True:
    print(items)
  • 데이터 저장
import csv

with open('movie_data.csv', 'w', encoding='utf-8') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(['순위', '영화이름', '개봉일자'])  # 헤더 작성

    for item in items:
        writer.writerow([item['rank'], item['movieNm'], item['openDt']])
  • 예외 처리
try:
    response = requests.get(url, params=params)
    response.raise_for_status()  # HTTP 에러 발생 시 예외 처리
except requests.exceptions.RequestException as e:
    print(f"Request failed: {e}")
  • 반복 및 자동화 : 자동화 스크립트 작성
    • 스크립트를 실행하면 전체 데이터를 수집하도록 구성한다.
    • 스케줄러(Cron, Windows Task Scheduler 등)로 주기적으로 실행하도록 설정 가능하다.

 

    4. 최종 데이터 확인 및 활용

  • 데이터 정제 및 변환
import pandas as pd

df = pd.read_csv('movie_data.csv')
df.dropna(inplace=True)  # 결측치 제거
df['개봉일자'] = pd.to_datetime(df['개봉일자'])

 

  • 데이터 분석 및 시각화
    • matplotlib 등을 활용해 데이터를 시각화하여 분석한다.
  • 데이터 저장
df.to_csv('final_data.csv', index=False)

 

'Web Crawling > Web Crawling ?' 카테고리의 다른 글

CSS 선택자  (0) 2025.02.23
브라우저 렌더링 동작 구조  (0) 2025.02.23
크롤링 데이터 저장  (0) 2025.02.23
WEB의 구조  (0) 2025.02.23
Web Crawling 이란 ?  (0) 2025.02.23