📌 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 동작 원리

  1. API 제공 여부 확인
    • 크롤링하려는 웹사이트가 공식 API를 제공하는지 확인한다.
    • 예) OpenWeather API(날씨), Twitter API, YouTube API, Naver API
  2. API 키(API Key) 발급
    • 대부분의 API는 인증을 요구하므로, API 키를 발급받아야 한다.
    • 예) OpenAI API는 API Key를 발급받아야 사용 가능.
  3. API 요청 (Request) 보내기
    • requests 라이브러리를 이용하여 API 엔드포인트에 GET/POST 요청을 보냄.
    • 필요한 파라미터를 URL에 포함하여 원하는 데이터를 가져옴.
  4. 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 시 고려할 점

  1. Rate Limit (요청 제한)
    • 많은 API는 초당 또는 시간당 요청 수를 제한함.
    • 429 Too Many Requests 오류 발생 가능.
    • 해결 방법: API 제공업체의 요청 속도 제한 정책 확인 및 적절한 time.sleep() 사용.
  2. Authentication (인증) 필요 여부
    • 일부 API는 OAuth 2.0, API Key, JWT Token 등 인증 방식을 요구함.
    • 예) Twitter API는 OAuth 2.0 인증 필요.
  3. 유료 API 여부
    • API 사용량이 일정 한도를 초과하면 유료 과금될 수도 있음.
    • 예) OpenAI API, Google Cloud API는 일정 무료 사용량 초과 시 유료 과금됨.
  4. 데이터 포맷(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를 활용하여 실전 프로젝트를 개발할 수 있다.

 

+ Recent posts