내가 원하는 시간에 자동으로 데이터를 수집하고 싶다면? (파이썬 schedule, Task Scheduler, crontab)

웹 크롤링을 자동화하려면 어떻게 할까요? 파이썬의 schedule 라이브러리와 시스템 스케줄러(Task Scheduler, cron)를 활용하여 데이터를 원하는 시간에 수집하는 방법을 알아보세요.

0. 웹크롤링, 수동실행하기 매우 번거로우셨죠?

웹 크롤링 코드를 작성했는데, 매번 수동으로 코드를 실행하기 귀찮으신가요? 원하는 시간, 원하는 주기로 파이썬 코드가 알아서 실행되게 하는 방법을 소개합니다. 자동화의 시작, 함께해보시죠!
 
 
 

1. 파이썬 스케줄러 활용하기

파이썬으로 웹 스크래핑 코드를 작성하였다면, 가장 쉬운 방법 중 하나는 파이썬의 'schedule' 라이브러리를 활용하는 것입니다.

1.1. 라이브러리 설치

pip install schedule

1.2. 자동화 코드

import schedule import time def job(): print("크롤링 시작!") # 여기에 웹 크롤링 코드를 넣으세요. schedule.every(10).minutes.do(job) # 10분마다 # schedule.every().hour.do(job) # 1시간마다 # schedule.every().day.at("10:30").do(job) # 매일 10:30에 while True: schedule.run_pending() time.sleep(1)
 
 

2. 시스템 스케줄러 활용하기

시스템 스케줄러는 운영체제에서 제공하는 툴로, 사용자가 미리 설정한 시간 또는 주기에 원하는 작업을 자동으로 실행시킬 수 있게 해줍니다. 웹 크롤링 스크립트뿐만 아니라 백업, 시스템 업데이트 등 다양한 작업에 활용됩니다. Windows의 'Task Scheduler', Mac과 Linux의 'cron'이 대표적인 예입니다.
 

2.1. Windows: Task Scheduler

  • 시작 메뉴에서 '작업 스케줄러'를 검색합니다.
  • '작업 생성'을 선택합니다.
  • 작업 이름, 설명을 입력합니다.
  • '트리거' 탭에서 새로운 트리거를 추가하여 실행 시간 및 주기를 설정합니다.
  • '동작' 탭에서 새로운 동작을 추가하여 파이썬 스크립트를 실행하는 명령어를 입력합니다. 예: python.exe 경로\script.py
  • 설정이 완료되면 '확인'을 클릭하여 작업을 저장합니다.
※ 주의사항: 파이썬 스크립트 경로나 파이썬 실행 파일 경로에 공백이 포함되어 있으면 큰따옴표(")로 묶어주어야 합니다.
 

2.2. Mac & Linux: cron

  • 터미널을 열고 crontab -e 명령어를 입력하여 cron job을 편집합니다.
  • 아래의 형식을 따라 스케줄링하려는 작업을 추가합니다.
분 시 일 월 요일 /파이썬의_절대경로/python3 /크롤링_파이썬_스크립트의_절대경로/script.py
예) 매일 오후 3시 30분에 실행하려면:
30 15 * * * /usr/local/bin/python3 /your/path/to/script.py
※ 로그 확인: 기본적으로 cron 작업의 출력은 메일로 전송되나, 대부분의 시스템에서는 이 메일 시스템이 활성화되어 있지 않습니다. 따라서 로그 파일에 직접 출력하도록 설정할 수 있습니다.
※ 주의사항: cron은 절대 경로를 사용해야 하므로, 파이썬과 스크립트의 절대 경로를 정확히 입력해야 합니다. 환경 변수가 설정되어 있지 않을 수 있으므로 스크립트 내에서 필요한 환경 변수를 직접 설정하는 것이 좋습니다.
 
 

3. 마무리

지금까지 파이썬 스케줄러와 시스템 스케줄러를 활용하여 웹 크롤링 코드를 자동화하는 방법을 살펴보았습니다. 웹 크롤링 작업의 효율성을 극대화하려면 이러한 자동화 도구를 활용하는 것이 중요합니다.
또한, 앞서 언급한 방법들 외에도 다양한 클라우드 서비스나 전문화된 자동화 툴들이 있으니, 여러 방법을 탐색하며 최적의 해법을 찾는 것도 좋습니다.
자동화는 단순 반복 작업에서 우리를 해방시켜주며, 더 큰 가치 있는 작업에 집중할 수 있게 도와줍니다. 적극적으로 활용해보시길 바랍니다!
 

이 글도 함께 읽어보세요: