본문 바로가기
파이썬/[파이썬을 활용한 웹 크롤링 완벽 가이드]

📌 7. Scrapy를 활용한 데이터 자동화 및 스케줄링

by 배불뚝 아저씨 2025. 2. 13.
반응형

1. 이전 강의 리뷰

이전 강의에서는 Scrapy 프레임워크를 활용하여 뉴스 데이터를 크롤링하고 SQLite 데이터베이스에 저장하는 방법을 배웠습니다. 이번 강의에서는 Scrapy 크롤링을 자동화하고, 크론잡(Cron Job)Airflow를 사용하여 데이터 수집 파이프라인을 구축하는 방법을 배워보겠습니다.


2. 크롤링 자동화의 필요성

웹 크롤링은 주기적으로 데이터를 수집할 때 진정한 가치를 발휘합니다. 예를 들어, 매일 아침 뉴스 데이터를 수집하거나, 매주 특정 사이트에서 상품 정보를 업데이트하는 등의 작업을 자동화하면 시간과 노력을 절약할 수 있습니다.


3. 크론잡(Cron Job)을 활용한 Scrapy 자동화

✅ 크론잡이란?

  • 크론잡은 리눅스/유닉스 기반 시스템에서 특정 시간마다 명령어를 자동 실행할 수 있는 도구입니다.

🔹 크론잡 설정 방법

  1. 터미널에서 크론 편집기 열기
  2. crontab -e
  3. 크롤링 스케줄 추가매일 오전 9시에 Scrapy news Spider를 실행하고, 날짜가 포함된 JSON 파일로 결과를 저장합니다.
  4. 0 9 * * * /usr/bin/scrapy crawl news -o news_$(date +\%Y-\%m-\%d).json
  5. 크론잡 확인
  6. crontab -l

결과: 매일 설정된 시간에 자동으로 크롤러가 실행되고 데이터가 저장됩니다.

🔹 추가 예제: 매주 월요일 오전 8시에 크롤링

0 8 * * 1 /usr/bin/scrapy crawl news -o weekly_news.json

4. Apache Airflow를 이용한 데이터 파이프라인 구축

✅ Apache Airflow란?

  • Airflow는 워크플로우를 관리할 수 있는 오픈소스 도구로, 데이터 수집, 가공, 저장 등의 과정을 파이프라인으로 구성하여 주기적으로 실행할 수 있습니다.

🔹 Airflow 설치

pip install apache-airflow

🔹 Airflow 프로젝트 설정

airflow db init
airflow users create --username admin --password admin --role Admin --email admin@example.com

🔹 Scrapy 크롤링 DAG 작성

Airflow의 DAG(Directed Acyclic Graph)는 작업 흐름을 의미합니다.

from airflow import DAG
from airflow.operators.bash import BashOperator
from datetime import datetime

default_args = {
    'owner': 'airflow',
    'start_date': datetime(2024, 2, 1),
    'retries': 1
}

dag = DAG('scrapy_news_crawl', default_args=default_args, schedule_interval='@daily')

crawl_task = BashOperator(
    task_id='run_scrapy',
    bash_command='scrapy crawl news -o /path/to/news_{{ ds }}.json',
    dag=dag
)

결과: Airflow 웹 인터페이스에서 DAG를 실행하거나, 매일 자동으로 Scrapy 크롤러가 실행됩니다.

🔹 추가 예제: 매월 1일 실행하는 Airflow DAG

dag = DAG('monthly_crawl', default_args=default_args, schedule_interval='0 0 1 * *')

반응형

5. 크롤링 자동화 결과 확인

✅ 크론잡 실행 결과

ls news_*.json
  • 매일 수집된 JSON 파일 리스트가 출력됩니다.

✅ Airflow 실행 결과


6. 크론잡과 Airflow의 관계

크론잡은 개별 작업을 주기적으로 실행하는 도구이고, Airflow는 복잡한 작업 흐름을 관리하는 도구입니다.

  • 크론잡은 간단한 주기적 실행에 적합하지만, 여러 단계의 작업이 필요할 때는 설정이 어렵습니다.
  • Airflow는 크론잡보다 복잡한 작업을 시각적으로 관리할 수 있으며, 크론잡을 내부적으로 포함할 수도 있습니다.

크론잡은 Airflow에서 개별 작업 단위로 활용될 수 있으며, Airflow는 크론잡을 더 효율적이고 관리하기 쉽게 만들어줍니다.


🎯 이번 강의를 마치며

이번 강의에서는 Scrapy 크롤러를 자동화하는 방법을 배웠습니다.

  • 크론잡을 사용하여 특정 시간마다 크롤링 자동 실행
  • Apache Airflow로 복잡한 데이터 파이프라인 관리
  • 자동화된 크롤링 결과 확인

추가 예제로 매주, 매월 실행하는 크론잡과 Airflow DAG를 제공했습니다.

이제 여러분도 데이터 수집 자동화 전문가가 될 준비가 되었습니다! 🚀


🚀 다음 강의 예고

8부: Scrapy에서 수집한 데이터 시각화 및 분석

  • pandas와 matplotlib을 사용한 데이터 분석
  • 크롤링된 데이터의 시각화
  • 데이터 인사이트 도출 및 활용
반응형

댓글