본문 바로가기

AI 콘텐츠 자동화

구글 검색 결과 크롤링 자동화 시도와 첫 번째 벽

[실패기] 바탕화면을 쑥대밭으로 만들다: 파이썬 파이프라인의 상대경로(Relative Path) 대참사

안녕하세요. 1인 자동화 기업 생존기를 공유하고 있는 파이선생입니다. 지난 포스팅들에서 구글 제미나이(Gemini) API 비용을 획기적으로 줄이는 최적화 가이드와 안전장치에 대해 설명해 드렸습니다. API 비용 통제라는 큰 산을 넘고 나니, 마침내 'Google Antigravity 상품 검색 자동화' 파이프라인 구축에 호기롭게 도전할 자신감이 생겼습니다.

최근 수많은 AI 유튜버들이 "코드 한 줄 몰라도 100% 자동화 봇을 만들어 드립니다"라고 홍보하는 것을 자주 보셨을 겁니다. 저 역시 그 달콤한 유혹에 빠져 AI 에이전트가 알아서 짜준 코드를 맹신했습니다. 하지만 그 결과, 제 업무용 PC의 바탕화면을 쑥대밭으로 만들고 소중한 비즈니스 폴더들을 모조리 날려버릴 뻔한 끔찍한 재난을 겪게 되었습니다.

오늘은 코딩 초보 1인 기업이 검색 봇을 만들려다 어떤 치명적인 파일 입출력(I/O) 에러를 발생시켰는지, 그리고 그 실패의 진짜 원인과 해결책은 무엇인지 냉철하게 분석해 보겠습니다.

AI가 짜준 '완벽해 보이는' 크롤링 코드의 함정

AI 에이전트의 도움을 받아 특정 키워드로 구글 상품 정보를 크롤링하고, 그 결과를 텍스트 파일로 자동 저장하는 파이썬 코드를 뚝딱 완성했습니다. AI에게 코드 리뷰를 부탁하니 "아주 훌륭하고 안정적인 자동화 파이프라인입니다. 당장 실행하세요!"라며 확신에 찬 답변을 주었죠.

아래는 당시 AI가 저에게 작성해 준 문제의 파이썬 코드 원본입니다.

import os
import time

def save_antigravity_items(items):
    # 데이터를 저장할 폴더 생성 (문제의 원흉!)
    save_dir = "./data/antigravity_results"

    if not os.path.exists(save_dir):
        os.makedirs(save_dir)

    for index, item in enumerate(items):
        file_path = f"{save_dir}/item_data_{index}.txt"
        with open(file_path, "w", encoding="utf-8") as f:
            f.write(f"상품명: {item['name']}\n가격: {item['price']}")
        print(f"[성공] {file_path} 저장 완료")

# 임시 테스트 실행
dummy_items = [{"name": "Antigravity Boots", "price": "199.99"}] * 1000
save_antigravity_items(dummy_items)

저는 이 코드가 얼마나 위험한지 전혀 모른 채, 비주얼 스튜디오 코드(VS Code)에서 당당하게 실행(Run) 버튼을 눌렀습니다.

명령 프롬프트에 쏟아지는 무한 루프 에러

코드를 실행하자마자 터미널(명령 프롬프트) 창에 수천 줄의 로그가 미친 듯이 쏟아지기 시작했습니다. 처음에는 봇이 일을 아주 잘하고 있다고 생각하며 무인 상품 탐색의 단꿈에 젖어 있었죠. 하지만 1분 뒤, 터미널 창은 새빨간 에러 메시지로 도배되었습니다.

PS C:\Users\jyune\Desktop> python antigravity_bot.py
[성공] ./data/antigravity_results/item_data_0.txt 저장 완료
[성공] ./data/antigravity_results/item_data_1.txt 저장 완료
... (중략) ...
[성공] ./data/antigravity_results/item_data_999.txt 저장 완료
Traceback (most recent call last):
  File "antigravity_bot.py", line 19, in <module>
    save_antigravity_items(dummy_items)
  File "antigravity_bot.py", line 13, in save_antigravity_items
    with open(file_path, "w", encoding="utf-8") as f:
OSError: [Errno 28] No space left on device: './data/antigravity_results/item_data_1000.txt'

무심코 바탕화면을 확인한 저는 경악을 금치 못했습니다.

 

바탕화면에 무한 증식하는 정체불명의 데이터 폴더와 텍스트 찌꺼기 파일들

 

바탕화면 한가운데에 data라는 정체불명의 폴더가 생겨났고, 그 안에는 의미를 알 수 없는 상품 텍스트 찌꺼기 파일들이 1초에 수십 개씩 무한 증식하고 있었습니다. 급기야 C드라이브 용량이 꽉 차버려서 No space left on device (장치에 남은 공간이 없음) 에러를 뿜어내며 윈도우 운영체제 자체가 먹통이 되기 일보 직전이었습니다.

실패 원인 분석: 상대 경로(Relative Path)에 대한 무지

황급히 컴퓨터 전원을 강제 종료하고 원인을 분석해 보니, 문제는 AI가 아니라 전적으로 저에게 있었습니다. AI는 코드를 문법적으로 정확하게 짜주었지만, 파이썬 파일 입출력의 핵심인 '절대 경로(Absolute Path)'와 '상대 경로(Relative Path)'의 개념을 전혀 몰랐던 제가 실행 환경을 완전히 잘못 세팅한 것이 원인이었습니다.

AI가 작성한 코드의 핵심 문제는 바로 이 한 줄이었습니다.
save_dir = "./data/antigravity_results"

여기서 맨 앞의 점 하나(.)는 파이썬에서 "현재 명령 프롬프트가 위치한 바로 그 폴더"를 의미하는 상대 경로입니다. AI는 당연히 제가 안전한 격리된 프로젝트 폴더 내부에서 터미널을 열고 실행할 것이라 가정했습니다.

하지만 저는 코딩 초보였기 때문에, 터미널의 위치를 `C:\Users\jyune\