일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 프로그래머스
- 코딩테스트
- 중심사회
- 스파르타내일배움캠프WIL
- 항해
- Python
- 개인공부
- til
- 스파르타코딩클럽
- java
- 스파르타내일배움캠프TIL
- 운영체제
- Spring
- 개발자블로그
- 컴퓨터구조론 5판
- 자바
- 내일배움캠프
- 99클럽
- 부트캠프
- Flutter
- AWS
- MySQL
- wil
- 백준
- 국비
- 99일지
- 개발자스터디
- 컴퓨터개론
- 스파르타내일배움캠프
- 소프트웨어
- Today
- Total
컴공생의 발자취
윈도우 환경에서 Python 크롤링 작업 자동화 (feat. PowerShell, 작업 스케줄러) 본문
목차
1. 환경 준비
2. 가상환경 설정 및 패키지 설치
3. MySQL 설정 및 데이터베이스 구성
4. 환경 변수 관리
5. PowerShell 스크립트 작성
6. bat 파일 생성
7. 작업 스케줄러 시작
들어가며
크롤링 작업을 주기적으로 실행하려면 자동화가 필요하다.
특히 일정한 시간에 크롤링 작업을 반복적으로 수행해야 할 경우, 이를 수동으로 처리하는 것은 비효율적이고 번거로울 수 있다.
이 글에서는 윈도우 환경에서 Python을 활용한 크롤링 작업을 자동화하는 방법을 다룬다.
PowerShell 스크립트와 작업 스케줄러(Task Scheduler)를 활용해, Python 크롤링 스크립트를 정기적으로 실행할 수 있도록 설정하는 방법을 단계별로 설명한다. 이를 통해 서버나 개인 컴퓨터에서 매일, 매주 반복되는 작업을 손쉽게 자동화할 수 있다.
이 과정에서 배치 파일(batch file)과 작업 스케줄러(Task Scheduler)를 사용한다. 배치 파일은 여러 명령어를 한 번에 실행할 수 있도록 해주는 텍스트 파일로, 주로 .bat 확장자를 가진다. 이 글에서는 배치 파일을 이용해 PowerShell 스크립트를 동작시켜 Python 환경을 설정하고, 크롤링 작업을 자동으로 실행하도록 한다. 작업 스케줄러는 정해진 시간에 지정된 작업을 자동으로 실행하도록 설정할 수 있는 윈도우의 기본 기능이다.
이 글은 배치 파일을 통해 PowerShell 스크립트를 실행하고, 작업 스케줄러를 활용해 주기적인 자동화를 구현하는 방법을 설명하는 글이다.
1. 환경 준비
- Python 설치 및 IDE 설정
- 프로젝트 레포지토리 다운로드
2. 가상환경 설정 및 패키지 설치
- 가상환경 생성 및 활성화
python -m venv venv
.\venv\Scripts\Activate
- requirements.txt 설치
pip install -r requirements.txt
3. MySQL 설정 및 데이터베이스 구성
- MySQL 설치 및 데이터베이스 생성
- 데이터베이스 모델 구성
4. 환경 변수 관리
- .env 파일 생성 및 설정
DB_HOST={host}
DB_PORT={port}
DB_NAME={database_name}
DB_USER={username}
DB_PASSWORD={password}
5. PowerShell 스크립트 작성
- 작업 실행을 위한 PowerShell 스크립트(cron.ps1) 작성
# Base directory 설정
$BaseDirectory = "C:---"
# Activate Python virtual environment
$ActivateVenv = "$BaseDirectory\venv\Scripts\activate.bat"
# Python virtual environment 활성화 및 requirements 설치
$RequirementsFile = "$BaseDirectory\requirements.txt"
# Python 가상 환경 활성화 및 requirements 설치
Write-Output "Activating virtual environment and installing requirements..."
& "$ActivateVenv"
pip install -r $RequirementsFile
# Get current timestamp for log file
$Timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
# Log directory and file
$LogDirectory = "$BaseDirectory\log"
if (-not (Test-Path $LogDirectory)) {
Write-Output "Creating log directory: $LogDirectory"
New-Item -ItemType Directory -Path $LogDirectory | Out-Null
}
$LogFile = "$LogDirectory\cron_${Timestamp}.log"
# Construct and execute the command
$Command = "python $BaseDirectory\main.py >> $LogFile 2>&1"
Write-Output "Running: $Command"
Invoke-Expression $Command
- 스크립트 실행 정책 설정
PowerShell 실행 정책 확인
PowerShell의 실행 정책이 제한되어 있을 수 있다.
현재 실행 정책을 확인하려면:
Get-ExecutionPolicy
- 결과가 Restricted 또는 AllSigned라면, 스크립트 실행이 제한되어 .\venv\Scripts\Activate를 실행할 수 없다.
실행 정책 일시적으로 변경
실행 정책을 변경하여 스크립트를 실행할 수 있도록 설정한다.
관리자 권한으로 PowerShell을 열고 실행:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned
- Scope Process : 현재 PowerShell 세션에만 적용 (재부팅 시 기본값으로 복원됨)
- RemoteSigned : 로컬에서 생성한 스크립트는 실행 가능, 외부에서 다운로드한 스크립트는 서명이 필요.
- 메모장에서 UTF-8(BOM)으로 저장
6. bat 파일 생성
- run_crawler.bat 생성
@echo on
cd /d C:---
call venv\Scripts\activate
powershell -ExecutionPolicy Bypass -File cron.ps1
pause
- 인코딩 : 메모장에서 ANSI로 저장
7. 작업 스케줄러 시작
- 작업 스케줄러 생성
- 작업 스케줄러명 : Crawling Tasks
- 새 트리거 만들기
- 매일 오후 3시 동작시키기
- 동작 속성
- bat 파일이 위치한 곳
- 인수 추가 : bat 파일
- 시작 위치 : bat 파일이 위치한 곳
- 설정
- 제대로 동작하는지 확인하기
'🌃 TIL' 카테고리의 다른 글
[TIL] 나는 왜 Java Spring Boot를 사용했을까? (2) | 2024.09.05 |
---|---|
security 유효성 검사에서 403 error (0) | 2024.07.08 |
마지막 개인과제 제출 (0) | 2024.07.07 |
디버그 (0) | 2024.07.05 |
AWS (0) | 2024.07.02 |