2. Open API
2-1. Open API 개요
2-1-1. Open API란
💡공개적으로 사용할 수 있도록 제공되는 API(Application Programming Interface)로, 개발자가 표준화된 방법으로 특정 서비스나 데이터에 접근할 수 있게 한다.
2-1-2. Open API의 특징
- API 키(API Key), OAuth 등의 인증 방식을 사용한다.
- 사용량 제한, 호출 빈도 제한 등의 정책이 존재한다.
- API 사용 방법, 요청 및 응답 형식, 예제 코드 등 상세한 내용을 공식 문서로 제공한다.
2-1-3. Open API의 장점
- 표준화된 인터페이스로 빠르게 개발 가능하여 생산성이 향상된다.
- 필요한 데이터를 손쉽게 획득하여 서비스 개발에 활용할 수 있다.
- 데이터 제공자와 소비자 간의 협업과 혁신을 촉진한다.
2-2. Open API 사용법
2-2-1. API 문서 이해
- API 엔드포인트(Endpoint) : API에 접근하기 위한 URL 주소
- HTTP 메서드(Method)
- GET: 데이터 조회
- POST: 데이터 생성
- PUT/PATCH: 데이터 수정
- DELETE: 데이터 삭제
- 요청 파라미터(Parameter) : 쿼리 스트링 또는 요청 본문에 포함되는 데이터
- 응답 형식 : JSON, XML 등으로 데이터 반환
- 인증 방법
- API Key: 요청 헤더나 파라미터에 포함
- OAuth: 토큰 발급 후 인증에 사용
2-2-2. API 테스트 방법
- API 테스트 도구 사용 (Postman 등)
- GUI 환경에서 요청을 구성하고 응답을 확인한다.
- 요청 내역 저장 및 공유 가능하다.
- cURL 명령어 사용
- 터미널에서 HTTP 요청을 실행하여 테스트한다.
- 스크립트나 배치 파일에 활용 가능하다.
- 브라우저를 통한 간단한 테스트
- GET 요청의 경우 브라우저 주소창에 엔드포인트와 파라미터 입력하여 테스트 할 수 있다.
2-2-3. 공공 데이터 포털 API 사용 방법
- 공공 데이터 포털 사이트에서 회원 가입 후 API 신청하여 키를 발급받는다.
- 제공되는 API 매뉴얼에서 요청 방법, 파라미터, 응답 형식 등을 확인한다.
- 문서에 명시된 대로 API를 호출하고 응답을 확인한다.
2-3. API 크롤러
2-3-1. API 크롤러 만들기
- 개발 환경을 설정한다.
- 프로그래밍 언어를 선택한다. (python)
- 크롤링에 필요한 라이브러리를 설치한다. (requests, json 등)
- API key와 엔드 포인트를 설정한다. (이때, API key는 유출되면 안되는 정보이므로 환경 변수나 설정 파일에 담아 안전하게 보관해야 한다.)
- API 요청 함수를 작성한다.
- 예시 (영화진흥위원회 박스오피스 API)
- 요청 파라미터 구성
- 예시 (영화진흥위원회 박스오피스 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 |