14. Python Selenium으로 브라우저 자동화하기 — 동적 웹 페이지 크롤링 완벽 가이드

이미지
처음에는 requests와 BeautifulSoup 조합만으로도 웬만한 페이지는 다 긁어올 수 있어서 크롤링이 정말 쉽다고 생각했어요. 그러다 어느 날, 평소처럼 코드를 돌렸는데 아무리 해도 빈 화면이나 에러 메시지만 출력되더라고요. 브라우저 창에는 뻔히 보이는 데이터가 왜 안 가져와지나 한참을 헤맸죠. 알고 보니 그 사이트가 리액트로 전면 개편되면서 데이터를 JavaScript로 동적 로딩하게 바뀐 거였습니다. 서버에서 받아온 초기 HTML에는 정말로 아무것도 없었던 거죠. 그때 처음으로 화면을 직접 제어해야겠다는 필요성을 느끼고 Selenium을 공부하기 시작했습니다. 이 글에서는 Selenium이 정확히 어떤 상황에서 필요한지, 설치와 기본 설정 방법, 브라우저를 코드로 제어하는 핵심 명령어, 그리고 실전 자동화 예제까지 단계별로 안내해 드리겠습니다. Selenium이 필요한 이유 — requests가 못 하는 것 이전 글에서 배운 requests + BeautifulSoup 조합은 서버가 HTML을 통째로 내려주는 정적 페이지 에서는 잘 동작합니다. 하지만 현대 웹사이트의 상당수는 다릅니다. 페이지를 열면 처음엔 빈 화면이었다가, JavaScript가 실행되면서 데이터가 채워지는 방식입니다. 로그인 후에만 보이는 페이지, 스크롤을 내려야 나타나는 콘텐츠, 버튼을 클릭해야 펼쳐지는 메뉴 — 이 모든 것이 requests 로는 가져올 수 없습니다. HTML을 요청하는 순간엔 아직 데이터가 없기 때문입니다. 비유하자면 이렇습니다. requests 는 식당에 전화로 메뉴판을 팩스로 보내달라 고 요청하는 것입니다. Selenium은 직접 식당에 찾아가서 자리에 앉고, 메뉴를 펼치고, 음식을 주문하는 것 입니다. 실제 손님처럼 브라우저를 조작하기 때문에 JavaScript가 실행된 이후의 완성된 페이지를 그대로 가져올 수 있습니다. Selenium이 적합한 상황 로그인이 필요한 페이지의 데이터 수집 JavaScript로 동...

13.Python으로 웹 크롤링하기 — requests와 BeautifulSoup 입문 가이드

이미지
처음엔 저도 여러분처럼 필요한 데이터를 모으기 위해 수많은 웹사이트를 클릭하며 일일이 복사했습니다. 하지만 반복되는 단순 업무에 지쳐 자동화를 결심했고, 크롤링을 배운 후에는 수백, 수천 개의 데이터를 단 몇 초 만에 수집할 수 있게 되었습니다. 그때의 경험을 바탕으로, 여러분이 겪고 계신 불필요한 시간 낭비를 확실하게 줄여드리겠습니다 이 글에서는 웹 크롤링의 기본 원리부터 requests 로 웹 페이지를 가져오고 BeautifulSoup 으로 원하는 데이터를 추출하는 방법, 그리고 실제로 데이터를 CSV로 저장하는 실전 예제까지 단계별로 안내해 드리겠습니다. 웹 크롤링이란 무엇인가 — 도서관 사서 비유로 이해하기 웹 크롤링(Web Crawling)은 프로그램이 자동으로 웹 페이지에 접속해서 필요한 정보를 수집하는 기술입니다. 비유하자면 도서관 사서 와 같습니다. 내가 직접 책장 사이를 돌아다니며 필요한 책을 찾는 대신, 사서에게 "경제학 관련 책 목록을 전부 뽑아줘"라고 부탁하면 사서가 알아서 정리해 가져다주는 것입니다. 웹 크롤러는 그 사서 역할을 Python 코드로 구현한 것입니다. 웹 스크래핑 vs 웹 크롤링 두 용어가 혼용되지만 엄밀히는 다릅니다. 웹 크롤링 : 여러 페이지를 자동으로 이동하며 링크를 따라다니는 행위 (구글 봇이 하는 일) 웹 스크래핑 : 특정 페이지에서 원하는 데이터만 추출하는 행위 이 글에서 다루는 것은 실질적으로 스크래핑 에 가깝지만, 실무에서는 두 용어를 구분 없이 '크롤링'으로 통칭하는 경우가 많습니다. 크롤링 전 반드시 확인해야 할 사항 ⚠️ 크롤링은 강력한 도구인 만큼 사용에 주의가 필요합니다. robots.txt 확인 : 사이트 주소 뒤에 /robots.txt 를 붙이면 해당 사이트가 크롤링을 허용하는 범위를 확인할 수 있습니다. 이용약관 확인 : 일부 사이트는 자동 수집을 명시적으로 금지합니다. 과도한 요청 금지 : 짧은 시간에 너...

12. Python으로 텔레그램 알림 보내기 — 실시간 알림 자동화 완벽 정리

이미지
 저도 처음에는 주식 시세나 서버 상태를 확인하기 위해 수시로 웹사이트에 접속하곤 했습니다. 하지만 파이썬과 텔레그램을 연동해 중요한 정보가 발생할 때마다 실시간 알림을 받도록 자동화해 두니, 일일이 확인해야 하는 번거로움이 완전히 사라졌습니다. 이 글에서는 VS Code 환경에서 Python을 활용하여 텔레그램 알림을 보내는 방법부터 봇 생성, 채팅 ID 확인, 메시지 전송, 실시간 모니터링 활용 사례, 그리고 자주 발생하는 오류 해결 방법까지 단계적으로 알아보겠습니다. 텔레그램 알림 자동화란 무엇인가 — 내 대신 알려주는 디지털 비서 텔레그램 알림 자동화는 특정 조건이 발생했을 때 Python이 자동으로 텔레그램 메시지를 보내주는 기술입니다. 쉽게 말하면 하루 종일 화면을 지켜보지 않아도 중요한 이벤트가 발생하면 즉시 알려주는 개인 비서와 같습니다. 예를 들어 다음과 같은 상황에 활용할 수 있습니다. 주식 매수 신호 발생 코인 가격 급등락 감지 서버 장애 발생 웹사이트 오류 감지 신규 주문 접수 데이터 수집 완료 직접 확인하지 않아도 필요한 정보가 자동으로 도착하기 때문에 업무 효율이 크게 향상됩니다. 왜 Python과 텔레그램 조합이 인기 있을까 자동화 프로젝트를 진행하다 보면 결국 "결과를 어디로 받을 것인가"가 중요해집니다. 이때 텔레그램은 매우 강력한 선택지가 됩니다. 텔레그램의 장점 무료 사용 가능 API 제공 설치가 간단함 실시간 알림 가능 모바일과 PC 동시 사용 가능 Python의 장점 다양한 자동화 라이브러리 지원 데이터 분석과 연동 가능 웹 크롤링과 결합 가능 서버 모니터링과 연동 가능 두 가지를 결합하면 다양한 자동화 시스템을 빠르게 구축할 수 있습니다. 텔레그램 봇 만들기 텔레그램 알림을 보내기 위해서는 먼저 봇(Bot)을 생성해야 합니다. 봇은 사람이 아닌 프로그램 전용 계정이라고 생각하면 됩니다. BotFather 실행 텔레그램에서 아래 계정을 검색합니다. BotFather 명령어를 입력합니다. /newbot 이후...

11. Python으로 이메일 자동화하기 — SMTP, 첨부파일, 대량 발송까지 완벽 정리

이미지
 처음에는 저 역시 매주 동일한 업무 메일을 수동으로 복사해 발송했습니다. 수신자가 20명을 넘어가면 많은 시간이 소요되었기 때문입니다. 하지만 파이썬 기반의 정기 이메일 자동화 시스템을 구축한 이후, 관련 업무 부담이 획기적으로 감소했습니다. 이 글에서는 VS Code 환경에서 Python을 활용하여 이메일을 자동 발송하는 방법부터 SMTP 설정, 첨부파일 전송, 여러 명에게 대량 발송하는 방법, 그리고 자주 발생하는 오류 해결 방법까지 단계적으로 알아보겠습니다. 이메일 자동화란 무엇인가 — 반복 작업을 대신하는 디지털 비서 이메일 자동화는 사람이 직접 메일을 작성하고 보내는 대신 Python 코드가 자동으로 메일을 발송하도록 만드는 기술입니다. 쉽게 말하면 매일 같은 시간에 같은 업무를 처리해주는 비서 한 명을 두는 것과 비슷합니다. 예를 들어 다음과 같은 업무를 자동화할 수 있습니다. 매일 아침 업무 보고 메일 발송 거래처 견적서 자동 전송 회원 가입 환영 메일 발송 시스템 장애 알림 메일 발송 매출 보고서 자동 발송 예약 확인 메일 자동 발송 특히 반복적인 메일 업무가 많은 경우 업무 시간을 크게 줄일 수 있습니다. 왜 VS Code와 Python 이메일 자동화를 사용할까 VS Code와 Python 조합은 이메일 자동화에 매우 적합합니다. VS Code의 장점 무료로 사용할 수 있습니다. Python 개발 환경 구축이 쉽습니다. 자동 완성 기능을 제공합니다. 디버깅 기능이 강력합니다. 다양한 확장 프로그램을 지원합니다. Python의 장점 문법이 쉽습니다. 이메일 관련 라이브러리가 풍부합니다. 데이터베이스, 엑셀, PDF와 쉽게 연동됩니다. 자동화 업무에 최적화되어 있습니다. Python 이메일 자동화 환경 구축하기 Python 설치 확인 터미널에서 아래 명령어를 입력합니다. python --version 정상적으로 버전이 출력되면 설치가 완료된 상태입니다. VS Code Python 확장 설치 다음 확장 프로그램을 설치합니다. Python P...

10.Python config.json 파일 읽고 저장하는 방법 — 설정 파일 관리 완벽 가이드

이미지
 저도 처음엔 데이터베이스 주소나 결과물 저장 경로를 소스 코드 상단에 변수로 적어두고 썼습니다. 개발할 때는 로컬 경로로 바꿨다가, 서버에 올릴 때는 다시 운영 서버 경로로 바꾸는 작업을 매번 수동으로 진행했죠. 그러다 어느 날 단 하나의 경로를 미처 고치지 않고 배포하는 바람에, 실제 운영 데이터가 로컬 테스트 데이터에 덮어써 지는 대형 사고 를 쳤습니다. 수습하느라 주말 16시간을 통째로 날린 뒤 , 설정값은 무조건 코드와 분리해야 한다는 걸 깨닫고 config.json 을 도입했습니다.   Python 프로젝트에서 config.json 파일을 활용한 설정 관리는 코드의 유연성과 유지보수성을 크게 향상시킵니다. 이 글에서는 JSON 파일로 설정을 읽고 저장하는 기본부터, 중첩 구조 처리, 기본값 관리, 그리고 .env 파일과의 역할 분리까지 — VS Code 환경에서 실무에 바로 쓸 수 있는 수준으로 안내해 드리겠습니다. config.json이 필요한 이유 — 코드와 설정을 분리하는 것 설정값을 코드에 직접 넣으면 생기는 문제 프로그램을 개발하다 보면 자주 바뀌는 값들이 생깁니다. API 서버 주소, 최대 요청 횟수, 파일 저장 경로, 알림 조건 수치 같은 것들입니다. 이 값들을 코드 안에 직접 넣으면 값 하나를 바꿀 때마다 코드를 열고, 수정하고, 저장하고, 다시 실행해야 합니다. 이를 레스토랑에 비유하면 이렇습니다. 메뉴판(config.json)은 따로 있고, 요리사(코드)는 메뉴판을 보고 요리합니다. 메뉴를 바꿀 때 요리사의 머릿속(코드)을 바꾸는 것이 아니라 메뉴판(설정 파일)만 바꾸면 됩니다. 코드는 건드리지 않아도 프로그램의 동작이 달라집니다. .env 파일과 config.json의 역할 차이 두 파일을 함께 쓰는 경우가 많아 혼동하기 쉽습니다. 역할은 명확히 다릅니다. 구분 .env 파일 config.json 용도 비밀 정보 (API Key, 비밀번호) 일반 설정값 (경로, 수치, 옵션)...

9.Python .env 파일 사용법 — API Key를 안전하게 관리하는 방법

이미지
저도 처음엔 AWS나 OpenAI API Key를 소스 코드에 그대로 적어두었다가 무심코 깃허브 퍼블릭 저장소에 올린 적이 있습니다. 정확히 3분 뒤, 봇(Bot) 크롤러에 털려 해외에서 수십만 원이 결제되었다는 요금 폭탄 메일 을 받고 온몸의 피가 마르는 식은땀을 흘렸죠. 부랴부랴 키를 폐기하고 계정을 정지 요청하며 지옥 같은 반나절을 보낸 뒤로는, 아무리 작은 토이 프로젝트를 하더라도 .env 파일 설정부터 먼저 하고 개발을 시작하는 버릇이 생겼습니다 API Key를 코드에 직접 넣는 순간, 그 키는 더 이상 비밀이 아닙니다. 이 글에서는 .env 파일이 무엇인지부터, python-dotenv 라이브러리 사용법, .gitignore 설정, 그리고 VS Code에서 효율적으로 관리하는 방법까지 — API Key 보안의 전 과정을 안내해 드리겠습니다. API Key를 코드에 직접 넣으면 안 되는 이유 깃허브에 올리는 순간 전 세계에 공개됩니다 개발을 처음 시작하면 이런 코드를 자연스럽게 작성하게 됩니다. # 절대 하면 안 되는 방식 api_key = "sk-abcd1234efgh5678ijkl" response = openai.ChatCompletion.create(api_key=api_key, ...) 이 코드를 깃허브에 올리는 순간 어떤 일이 벌어질까요? 전 세계 수백만 명이 볼 수 있는 공개 저장소에 내 API Key가 그대로 노출됩니다. 더 무서운 것은 코드를 삭제해도 커밋 이력에는 영원히 남는다 는 사실입니다. 깃허브에는 API Key를 자동으로 탐지하는 봇들이 돌아다니고 있어, 업로드 후 수 분 안에 키가 악용되는 사례도 실제로 발생합니다. 마치 집 열쇠 사진을 SNS에 올리는 것과 같습니다. 열쇠 자체가 아닌 사진이지만, 그것만으로도 누군가 복제할 수 있는 충분한 정보가 됩니다. 개발 환경과 운영 환경을 분리해야 합니다 실제 서비스를 운영하다 보면 환경이 여러 개로 나뉩니다. 개발 환경(local) — 테스트용 API...

8. Python으로 PDF 자동화하기 — 생성, 병합, 데이터 보고서 만들기 완벽 정리

이미지
처음에는 저 역시 PDF 작업을 수동으로 처리하느라 많은 시간을 썼습니다. 파일 병합이나 보고서 생성 같은 번거로운 일들이 많았기 때문인데요. 파이썬 자동화를 도입한 지금은 버튼 한 번으로 모든 작업을 간편하게 끝내고 있습니다 이 글에서는 VS Code 환경에서 Python을 활용하여 PDF를 생성하는 방법부터, 여러 PDF 파일을 자동으로 병합하는 방법, 엑셀 데이터를 PDF 보고서로 만드는 방법, 그리고 실무에서 자주 발생하는 오류 해결 방법까지 단계적으로 알아보겠습니다. PDF 자동화란 무엇인가 — 반복 업무를 대신 처리하는 디지털 비서 PDF 자동화는 사람이 직접 문서를 만들고 저장하는 대신 Python 코드가 자동으로 처리하도록 만드는 작업입니다. 비유하자면 PDF 자동화는 사무실에 한 명의 보조 직원을 두는 것과 비슷합니다. 사람이 매번 같은 업무를 반복하는 대신, Python이 정해진 규칙에 따라 문서를 생성하고 정리합니다. 실제로 다음과 같은 업무에 활용됩니다. 견적서 자동 생성 거래명세서 자동 생성 보고서 PDF 출력 여러 PDF 파일 병합 PDF 텍스트 추출 계약서 자동 생성 왜 VS Code와 Python PDF 자동화를 함께 사용할까 VS Code는 현재 가장 많이 사용되는 무료 개발 도구 중 하나입니다. Python과 함께 사용하면 강력한 자동화 환경을 구축할 수 있습니다. VS Code의 장점 무료 사용 가능 Python 확장 지원 자동 완성 기능 제공 디버깅 기능 지원 Git 연동 가능 Python의 장점 문법이 쉽습니다 라이브러리가 풍부합니다 자동화에 최적화되어 있습니다 데이터 처리와 연동이 쉽습니다 PDF 자동화를 위한 환경 구축하기 Python 설치 확인 터미널에서 아래 명령어를 실행합니다. python --version 버전이 표시되면 정상 설치된 상태입니다. VS Code Python 확장 설치 확장 프로그램 메뉴에서 다음을 설치합니다. Python Pylance 설치 후 VS Code를 재실행합니다. PDF 생성 라이브러리...