개요 : 이 강의는 Python RPA 실무에 필요한 복잡도 있는 코드와 상세한 설명을 통해 보고서 자동화, 웹 데이터 수집 및 정리, API 처리 방법을 학습합니다. 각 과정은 실무와 유사한 상황을 반영하여 작성되었습니다.
1. 보고서 자동화: Excel 데이터 처리 & 요약 보고서 생성
실제 보고서 자동화는 단순한 데이터 입력을 넘어, 다양한 시트 관리, 계산, 조건부 포맷팅 등을 포함합니다. 이를 위해 openpyxl
과 datetime
모듈을 활용합니다.
예시 코드 | 설명 |
---|---|
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의 핵심입니다.