SKN/03. Web Crawling

01. 크롤링 개요

claovy☘️ 2025. 2. 25. 20:11

1. 크롤링이란?

01. 크롤링이란

💡 크롤링(Crawling)은 웹 페이지나 API로부터 원하는 정보를 자동으로 수집하는 기술로, 웹 스크래핑(Web Scraping)이라고도 불린다.
      크롤러(Crawler) 또는 스파이더(Spider)라고 불리는 프로그램이 인터넷 상의 웹 사이트를 링크를 따라가며 웹 전체 또는 특정 사이트를 자동으로 탐색하며 데이터를 추출한다.
      크롤링은 대량의 데이터를 효율적으로 수집하여 데이터 분석, 머신러닝 모델 학습, 시장 조사 등 다양한 분야에서 활용된다.

 

02. 크롤링과 스크래핑의 차이점

웹 크롤링 : 웹 전체를 자동 탐색하여 페이지를 수집 / 주로 검색 엔진에서 활용

웹 스크래핑 : 특정 웹 페이지에서 원하는 데이터를 추출 / 데이터 분석이나 시장 조사 등 특정 목적을 위해 사용

 

03. 크롤링의 필요성

  • 데이터 수집 자동화: 수동으로 데이터를 수집하는 데 드는 시간과 노력을 절감할 수 있다.
  • 실시간 정보 수집: 최신 데이터를 지속적으로 수집하여 시장 변화에 빠르게 대응할 수 있다.
  • 대규모 데이터 분석: 머신러닝 모델 학습을 위한 빅데이터를 확보할 수 있다.
  • 경쟁력 강화: 경쟁사 분석, 소비자 트렌드 파악 등을 통해 비즈니스 전략 수립할 수 있다.

04. 크롤링 시 주의사항

(1) 법적 고려사항

  1. 저작권이 있는 콘텐츠를 허가 없이 수집하여 사용하면 법적 문제가 발생할 수 있다.
  2. 대상 사이트의 이용 약관을 확인하고 허용된 범위 내에서 크롤링 해야 한다.
  3. 사이트에서 지정한 크롤링 허용/비허용 정책*(로봇 배제 표준(robots.txt))*에 따라야 한다.

(2) 서버 부하 방지

  1. 과도한 요청은 대상 서버에 부하를 주어 서비스 장애를 유발할 수 있다.
  2. 요청 간 딜레이 적용, 동시에 보내는 요청 수 제한 등으로 부하를 최소화해야 한다.

(3) 개인정보 보호 및 윤리적 고려

  1. 개인정보나 민감한 정보 수집 시 개인정보 보호법 등 관련 법규를 준수해야 한다.
  2. 수집한 데이터를 어떻게 활용할 것인지에 대한 윤리적 판단이 필요하다.

(4) IP 차단 위험

    1. 무분별한 크롤링은 대상 서버에서 IP를 차단할 수 있으므로 주의해야 한다.

 


2. Open API

01. Open API 개요

(1) Open API 란

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

 

(2) Open API 특징

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

 

(3) Open API 장점

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

 

02. Open API 사용법

(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) API 테스트 방법

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

(3) 공공 데이터 포털 API 사용 방법

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

03.  API 크롤러

[API 크롤러 만들기]

1. 개발 환경 설정

  • 프로그래밍 언어를 선택한다. (python)
  • 크롤링에 필요한 라이브러리를 설치한다. (requests, json 등)
  • API key와 엔드 포인트를 설정한다. (이때, API key는 유출되면 안되는 정보이므로 환경 변수나 설정 파일에 담아 안전하게 보관해야 한다.)

2. API 요청 함수 작성

#1. 요청 파라미터 구성
params = {
    "key": "{key}",
    "targetDt": "20241120"
}

#2. 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}")
    
#3. 응답처리
if response.status_code == 200:
    data = response.json()  # JSON 응답 파싱
else:
    print(f"Error Code: {response.status_code}")

 

 

3. 받아온 데이터를 저장 및 처리 (데이터 검증, 데이터 저장, 예외처리, 반복)

반복 및 자동화 : 자동화 스크립트 작성 스크립트를 실행하면 전체 데이터를 수집하도록 구성한다.
스케줄러(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)

'SKN > 03. Web Crawling' 카테고리의 다른 글

06. 크롤링 도구 개요  (0) 2025.02.25
05. CSS 선택자  (0) 2025.02.25
04. 브라우저 렌더링 동작 구조  (0) 2025.02.25
03. 크롤링 데이터 저장  (0) 2025.02.25
02. WEB의 구조 및 크롤링  (0) 2025.02.25