📌 TIL (Today I Learned) - API Crawling
🔹 API Crawling이란?
API Crawling은 **웹 크롤링(Web Crawling)**과 **API 요청(Requesting)**을 결합한 방식으로, 특정 웹사이트의 데이터를 API를 통해 자동으로 수집하는 과정이다.
일반적인 웹 크롤링은 HTML 페이지에서 데이터를 직접 스크래핑하는 방식이지만, API Crawling은 웹사이트에서 공식적으로 제공하는 API를 이용하여 데이터를 보다 효율적이고 안정적으로 가져오는 방법이다.
🔹 API Crawling vs Web Crawling 차이점
비교 항목 Web Crawling API Crawling
| 데이터 접근 방식 | HTML을 직접 파싱하여 데이터 추출 | API 엔드포인트를 통해 구조화된 데이터 요청 |
| 데이터 형식 | HTML, XML 등 | JSON, XML 등 구조화된 데이터 |
| 속도 | 상대적으로 느림 (HTML 파싱 필요) | 빠름 (JSON, XML 데이터 직접 제공) |
| 유지보수 | 웹사이트 구조 변경 시 크롤러 수정 필요 | API 변경 전까지 안정적 |
| 법적 위험성 | 웹사이트 정책에 따라 크롤링이 금지될 수도 있음 | 공식 API 사용으로 법적 문제 최소화 |
🔹 API Crawling 동작 원리
- API 제공 여부 확인
- 크롤링하려는 웹사이트가 공식 API를 제공하는지 확인한다.
- 예) OpenWeather API(날씨), Twitter API, YouTube API, Naver API 등
- API 키(API Key) 발급
- 대부분의 API는 인증을 요구하므로, API 키를 발급받아야 한다.
- 예) OpenAI API는 API Key를 발급받아야 사용 가능.
- API 요청 (Request) 보내기
- requests 라이브러리를 이용하여 API 엔드포인트에 GET/POST 요청을 보냄.
- 필요한 파라미터를 URL에 포함하여 원하는 데이터를 가져옴.
- API 응답(Response) 처리
- API에서 반환된 JSON 또는 XML 데이터를 파싱하여 원하는 정보를 추출.
- Python의 json.loads()를 활용하여 JSON 데이터를 딕셔너리로 변환.
🔹 API Crawling 실습 예제
💡 예제: OpenWeather API를 사용하여 날씨 데이터 가져오기
import requests
# 1️⃣ API 키 입력
API_KEY = "your_api_key" # OpenWeather API 키 입력
CITY = "Seoul"
URL = f"http://api.openweathermap.org/data/2.5/weather?q={CITY}&appid={API_KEY}&units=metric"
# 2️⃣ API 요청
response = requests.get(URL)
# 3️⃣ 응답 처리
if response.status_code == 200:
data = response.json() # JSON 데이터 변환
temp = data["main"]["temp"]
weather = data["weather"][0]["description"]
print(f"{CITY}의 현재 온도: {temp}°C, 날씨: {weather}")
else:
print("API 요청 실패:", response.status_code)
✅ 실행 결과 예시
Seoul의 현재 온도: 12°C, 날씨: clear sky
🔹 API Crawling 시 고려할 점
- Rate Limit (요청 제한)
- 많은 API는 초당 또는 시간당 요청 수를 제한함.
- 429 Too Many Requests 오류 발생 가능.
- 해결 방법: API 제공업체의 요청 속도 제한 정책 확인 및 적절한 time.sleep() 사용.
- Authentication (인증) 필요 여부
- 일부 API는 OAuth 2.0, API Key, JWT Token 등 인증 방식을 요구함.
- 예) Twitter API는 OAuth 2.0 인증 필요.
- 유료 API 여부
- API 사용량이 일정 한도를 초과하면 유료 과금될 수도 있음.
- 예) OpenAI API, Google Cloud API는 일정 무료 사용량 초과 시 유료 과금됨.
- 데이터 포맷(JSON, XML 등) 이해
- 응답 데이터가 JSON인지, XML인지 확인하고 적절히 파싱해야 함.
- data.json() 또는 xml.etree.ElementTree 사용.
🔹 API Crawling 활용 예시
✅ 1. 날씨 정보 크롤링
- OpenWeather API, 기상청 API 사용하여 실시간 날씨 데이터 제공
✅ 2. 주식 & 코인 가격 크롤링 - Alpha Vantage API, Binance API 사용하여 실시간 금융 데이터 수집
✅ 3. 뉴스 헤드라인 수집 - Google News API, Naver 뉴스 API로 실시간 뉴스 헤드라인 크롤링
✅ 4. SNS 데이터 크롤링 - Twitter API, YouTube API를 활용하여 트렌드 분석
✅ 5. AI 모델 연동 - OpenAI API를 사용하여 GPT 기반 챗봇, 텍스트 요약, 감정 분석 서비스 개발
🔹 오늘의 배운 점 요약
- API Crawling은 Web Crawling보다 안정적이고 빠르며, JSON 데이터를 쉽게 다룰 수 있다.
- 공식 API를 활용하면 법적 문제 없이 데이터를 효율적으로 가져올 수 있다.
- 요청 제한(Rate Limit), 인증(Authentication), 데이터 포맷(JSON/XML) 등을 고려해야 한다.
- OpenWeather API, Twitter API, Google News API 등 다양한 API를 활용하여 실전 프로젝트를 개발할 수 있다.
'내일배움캠프 TIL' 카테고리의 다른 글
| 2025.03.10 TIL - RAG (1) | 2025.03.11 |
|---|---|
| 2025.03.07 TIL:Django - Logout 기능 구현 (0) | 2025.03.07 |
| 2025.03.06TIL : Django - Authentication & Permission (인증과 권한) (0) | 2025.03.06 |
| 2025.02.13TIL: Django - Authentication (0) | 2025.02.13 |
| 2025.02.12TIL : LangChain (0) | 2025.02.12 |