공모전 & 대외활동 자동 크롤링 프로젝트 : 2편 - Crontab을 이용해서 크롤링 자동화

캠퍼스픽 (https://www.campuspick.com/) 사이트에서 공모전 및 대외활동 정보를 원하는 시간에 자동으로 수집할 수 있도록 하는 방법을 알아봅니다.

지난번에 만들었던 "파이썬으로 캠퍼스픽 크롤러 만들기" 에 이어서, 이번에는 우리가 만들었던 크롤러를 내가 원하는 요일, 날짜, 시간에 실행하는 방법에 대해서 알아보도록 하겠습니다.
본 포스팅은 내가 원하는 시간에 자동으로 데이터를 수집하고 싶다면? (파이썬 schedule, Task Scheduler, crontab)글의 내용을 다수 포함합니다. 더욱 자세한 정보를 원하면 해당 글을 먼저 참고해주시기 바랍니다.
다양한 종류의 스케줄러가 있지만, 이번에는 Unix계열의 Mac/Linux 에서 사용가능한 Crontab과 Windows에서 사용가능한 Task Scheduler(작업 스케줄러)를 이용해서 크롤링 자동화를 구현해보도록 할 것 입니다. 본인이 사용하는 운영체제에 맞게 코드를 구성하시면 됩니다.
 
 

0. ⚠️ 시작 전 주의사항 ⚠️

해당 Crontab과 TaskScheduler(작업스케줄러)는 컴퓨터가 켜져있는 상황에서만 동작합니다. 코드를 실행시키고 컴퓨터를 꺼버리면 작동하지 않습니다!
 
 

1. Crontab을 이용하여 자동화

터미널을 열고 crontab -e 명령어를 입력하여 cron job을 편집합니다.
아래의 형식을 따라 스케줄링하려는 작업을 추가합니다.
분 시 일 월 요일 /파이썬의_절대경로 /크롤링_파이썬_스크립트의_절대경로
 
 

2. 파이썬의 절대경로 알아내기

which python3 /usr/local/bin/python3
터미널에서 which 명령어를 사용하면 해당 파일의 전체 디렉토리가 나오게 됩니다. 위 디렉토리 주소를 파이썬 절대경로에 넣어주세요.
 
 

3. 스크립트의 절대경로 알아내기

find . -name "파일이름"
명령어를 사용하시면 파일 이름에 해당하는 경로가 나오게 됩니다. 위 디렉토리 주소를 파이썬 스크립트의 절대경로 부분에 넣어주세요.
예) 매일 오후 3시 30분에 실행하려면:
30 15 * * * /usr/local/bin/python3 /your/path/to/script.py
※ 주의사항: cron은 절대 경로를 사용해야 하므로, 파이썬과 스크립트의 절대 경로를 정확히 입력해야 합니다. 환경 변수가 설정되어 있지 않을 수 있으므로 스크립트 내에서 필요한 환경 변수를 직접 설정하는 것이 좋습니다.
이렇게 하면 매일 오후 3시30분에 우리가 만들었던 크롤러가 실행됩니다.
 
 

4. TaskScheduler (작업스케줄러)를 이용해 자동화하기

4.1. 파이선의 절대경로 알아내기

윈도우에서는 파이썬의 경로를 알아내는 방법이 다릅니다. CMD 명령프롬프트 창을 켜고,
where python3
를 실행하고 나온 경로를 파이썬의 경로로 잡습니다. 만약 python3의 경로가 여러개 나왔다면 내가 어떠한 파이썬을 사용하는지 판단하여 해당하는 파이썬 경로를 가져와야 합니다.

4.2. 스크립트의 절대경로 알아내기

위에서 사용했던 CMD 명령 프롬프트에서 dir 명령어를 사용하여 경로를 찾아냅니다.
dir campuspickcrawling.py /s
위와 같이 내 파이썬 크롤러 파일의 이름과 확장자명까지 적어주어야 합니다. 경로가 반환 되었다면 해당 경로를 이용하면 됩니다.

4.3. 세팅하기

  • 시작 메뉴에서 '작업 스케줄러'를 검색
  • '작업 생성'을 선택
  • 작업 이름, 설명을 입력
  • '트리거' 탭에서 새로운 트리거를 추가하여 실행 시간 및 주기 설정
  • '동작' 탭에서 새로운 동작을 추가하여 파이썬 스크립트를 실행하는 명령어입력 (*여기에 위에서 구한 파이썬 스크립트의 경로를 넣어줍니다.)
  • 설정이 완료되면 '확인'을 클릭하여 작업을 저장합니다.
이렇게 설정을 완료하면 윈도우에서도 자동화를 할 수 있게 되었습니다.
 
 

5. 마무리

이번 게시물에서는 UNIX와 윈도우에서 각각의 방법으로 우리가 만든 크롤러를 자동화 시키는 방법에 대해서 알아 보았습니다. 다음 게시물에서는 자동화 까지 시켰으니, 이제 메일링으로 우리가 만든 크롤링 데이터를 주기적으로 발송하는 방법에 대해서 알아보도록 하겠습니다.