본문 바로가기
카테고리 없음

Python RPA 실전 가이드

by fisherman1 2025. 5. 29.

개요 : 이 강의는 Python RPA 실무에 필요한 복잡도 있는 코드와 상세한 설명을 통해 보고서 자동화, 웹 데이터 수집 및 정리, API 처리 방법을 학습합니다. 각 과정은 실무와 유사한 상황을 반영하여 작성되었습니다.

1. 보고서 자동화: Excel 데이터 처리 & 요약 보고서 생성

실제 보고서 자동화는 단순한 데이터 입력을 넘어, 다양한 시트 관리, 계산, 조건부 포맷팅 등을 포함합니다. 이를 위해 openpyxldatetime 모듈을 활용합니다.

예시 코드설명
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill
from datetime import datetime

wb = Workbook()
ws = wb.active
ws.title = "매출 보고서"

# 헤더 작성
headers = ["상품명", "수량", "단가", "합계"]
ws.append(headers)

# 데이터 입력
products = [("노트북", 3, 1200000), ("모니터", 5, 300000), ("키보드", 10, 50000)]
for item, qty, price in products:
    ws.append([item, qty, price, qty * price])

# 합계 계산
ws["D5"] = "=SUM(D2:D4)"
ws["D5"].font = Font(bold=True)
ws["D5"].fill = PatternFill("solid", fgColor="FFFF00")

# 보고서 날짜 입력
ws["A6"] = f"보고서 생성일: {datetime.now().strftime('%Y-%m-%d %H:%M')}"

wb.save("매출보고서.xlsx")
        
- 데이터 입력 + 계산식 추가
- 조건부 서식(노란색 배경) 적용
- 보고서 생성일 입력
- 합계 공식 `=SUM()` 사용
- 결과: 실무용 매출보고서 생성

2. 웹 데이터 수집: 페이징 처리 포함 뉴스 기사 크롤링

단일 페이지 크롤링이 아닌, 여러 페이지에 걸친 데이터 수집은 RPA 실무에서 필수입니다. requests, BeautifulSoup, time 모듈을 활용해 다중 페이지 크롤링을 구현합니다.

예시 코드설명
import requests
from bs4 import BeautifulSoup
import time

base_url = "https://news.ycombinator.com/news?p="
all_titles = []

for page in range(1, 4):  # 1~3페이지 반복
    url = base_url + str(page)
    response = requests.get(url)
    soup = BeautifulSoup(response.text, "html.parser")
    titles = soup.select(".titleline > a")
    
    for title in titles:
        all_titles.append(title.text)
    
    time.sleep(1)  # 서버 부하 방지

for i, t in enumerate(all_titles, 1):
    print(f"{i}. {t}")
        
- 1~3페이지 반복 크롤링
- `select()`로 CSS 선택자 활용
- 기사 제목 추출 및 출력
- 서버 부하 방지를 위한 딜레이(time.sleep)

3. API 데이터 처리: JSON 데이터 필터링 및 Excel 저장

API로 받은 JSON 데이터는 조건에 맞게 가공하여 저장하는 것이 중요합니다. 이를 위해 requests로 API 호출, json 파싱, openpyxl로 Excel 저장을 조합합니다.

예시 코드설명
import requests
from openpyxl import Workbook

response = requests.get("https://jsonplaceholder.typicode.com/posts")
posts = response.json()

# 사용자 ID가 1인 게시글만 추출
filtered = [p for p in posts if p["userId"] == 1]

wb = Workbook()
ws = wb.active
ws.append(["ID", "제목", "내용"])

for post in filtered:
    ws.append([post["id"], post["title"], post["body"]])

wb.save("user1_posts.xlsx")
        
- JSON API 응답 데이터 파싱
- 특정 조건(userId=1) 필터링
- Excel 파일에 데이터 저장
- 실무: API 기반 데이터 보고서 생성

활용 팁

  • 보고서 자동화 + API 처리 → 데이터 대시보드 생성 가능
  • 웹 크롤링 + API → 실시간 데이터 모니터링 시스템 구축 가능
  • Python RPA는 반복 업무의 자동화를 목표로 작은 코드부터 큰 파이프라인으로 확장 가능

마무리

실제 업무에 가까운 복잡한 예제를 통해 Python RPA의 가능성을 확인했습니다. 단순한 반복을 넘어서, 데이터 처리, 분석, 보고서 생성까지 자동화하는 것이 RPA의 핵심입니다.