파이썬자동화

[파이썬 자동화] 네이버 뉴스 크롤링 수집 데이터, 클릭 한 번에 엑셀 파일(.xlsx)로 저장하는 법

mumuverse 2026. 5. 19. 07:15
반응형

ADVERTISEMENT

안녕하세요! 지난 단원(Step 3)에서 파이썬을 이용해 실제 네이버 뉴스 검색창에서 실시간으로 '반도체 최신 뉴스' 10개의 제목과 링크 주소를 긁어오는 짜릿한 경험을 해보았습니다. 다들 성공하셨나요?

하지만 지난 코드는 치명적인 아쉬움이 있었습니다. 파이썬 검은색 콘솔 창에 글자가 잘 뜨긴 하지만, 프로그램을 종료하거나 컴퓨터를 끄면 내가 수집한 소중한 데이터들이 마법처럼 전부 날아가 버린다는 점이었죠. 화면으로만 보고 끝낼 거라면 굳이 자동화를 할 이유가 없습니다.

그래서 오늘은 자동화의 화룡점정이자 진짜 내 자산으로 만드는 단계인 '크롤링 데이터 엑셀 파일(.xlsx) 저장 자동화'를 배워보겠습니다. 수집한 뉴스 제목과 인터넷 주소를 아주 깔끔한 바둑판 모양의 엑셀 표로 만들어서 내 컴퓨터에 물리적인 파일로 딱 저장하는 방법입니다. 오늘도 초등학생이 보고 그대로 따라 할 수 있을 만큼 아주 세세하고 친절하게 정리해 드릴 테니 천천히 따라오세요!

※ 사내 보안 및 규정 준수 안내
본 포스팅은 인터넷에 공개된 네이버 뉴스 검색 데이터만을 활용하며, 저장 경로 역시 사내 네트워크 드라이브(NAS, 공유폴더 등)가 아닌 본인 로컬 PC의 가상 테스트 폴더를 기준으로 설명합니다. 사내 대외비나 기밀 시스템 정보 유출 우려가 전혀 없는 안전한 교육 목적의 범용 코드입니다.

1. 왜 엑셀 저장에는 Pandas(판다스)가 필수일까?

파이썬으로 엑셀을 다루는 방법은 여러 가지가 있지만, 전 세계 데이터 분석가와 개발자들이 입을 모아 극찬하는 압도적 1위 라이브러리가 바로 Pandas(판다스)입니다. 판다스를 쓰면 좋은 이유를 딱 쉽게 정리해 드릴게요.

  • 데이터프레임(DataFrame)이라는 사기적인 무기: 판다스는 우리가 긁어온 무작위 데이터를 엑셀과 똑같은 행(가로줄)과 열(세로줄)을 가진 표 형태로 기억해 주는 아주 똑똑한 가상 메모장 기능을 제공합니다.
  • 단 한 줄로 파일 생성 완료: 복잡하게 엑셀 프로그램을 켜고, 셀을 선택하고, 타이핑할 필요 없이 .to_excel()이라는 명령어 딱 한 줄만 입력하면 파이썬이 알아서 엑셀 파일을 뚝딱 만들어 디스크에 저장해 줍니다.

2. 사전 준비: 필수 라이브러리 2개 설치하기

판다스를 활용해 실제로 엑셀 파일을 컴퓨터에 생성하려면, 판다스 본체와 더불어 엑셀 전용 엔진 엔진 역할을 해주는 도구가 하나 더 필요합니다. 컴퓨터의 터미널(CMD 창 또는 VS Code 터미널)을 열고 아래의 두 줄 명령어를 각각 입력하고 엔터를 눌러주세요.

pip install pandas
pip install openpyxl

※ 중요: openpyxl 라이브러리가 설치되어 있지 않으면, 파이썬이 엑셀 파일을 만들다가 "엔진이 없어서 저장할 수 없다"는 에러를 뿜어내니 반드시 함께 설치해 주셔야 합니다.

3. 크롤링 + 엑셀 파일 저장 전체 소스 코드

지난 시간에 배웠던 네이버 뉴스 실시간 크롤링 코드 아래에, 판다스 상자를 만들고 엑셀 파일로 추출하는 로직을 살려 완벽하게 결합한 최종 마스터 코드입니다. 초록색으로 달아둔 주석을 한 줄씩 읽어보시면 초보자도 100% 코드를 이해하고 입맛대로 고칠 수 있습니다.

import requests                    # 웹페이지 소스코드를 가져오기 위한 도구 임포트
from bs4 import BeautifulSoup      # 소스코드 안에서 글자를 골라내기 위한 도구 임포트
import pandas as pd                # [중요] 데이터를 엑셀 표로 변환해 주는 판다스 라이브러리를 별명(pd)으로 임포트

# =========================================================================
# [사용자 설정 영역] 검색어와 저장될 파일명을 내 마음대로 정하는 곳입니다.
# =========================================================================
search_keyword = "반도체"          # 네이버 검색창에 넣을 검색어입니다.
output_filename = "네이버_반도체_뉴스_리스트.xlsx"  # 컴퓨터에 저장될 엑셀 파일의 이름입니다.

# 수집한 데이터를 차곡차곡 쌓아둘 빈 리스트(바구니)들을 미리 준비합니다.
title_list = []  # 뉴스 제목들을 모아둘 바구니
link_list = []   # 뉴스 인터넷 주소들을 모아둘 바구니

# 데이터를 가져올 네이버 뉴스 검색 페이지 주소를 조립합니다.
target_url = f"https://search.naver.com/search.naver?where=news&query={search_keyword}"

print(f"1단계: 네이버에서 '{search_keyword}' 관련 최신 뉴스를 실시간 수집하는 중...")

# requests 라이브러리로 네이버 서버에 페이지 소스코드 요청
response = requests.get(target_url)

if response.status_code == 200:
    # BeautifulSoup으로 가져온 HTML 텍스트 요리 준비
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # 지난 시간에 알아낸 뉴스 제목 방 'a' 태그의 'news_tit' 클래스를 전부 찾아 상자에 담기
    news_rooms = soup.find_all('a', class_='news_tit')
    
    # 찾아낸 뉴스 방들을 하나씩 돌면서 제목과 링크를 추출하는 반복문 실행
    for room in news_rooms:
        news_title = room.text  # 뉴스 방 안에서 순수한 '제목 글자'만 추출
        news_link = room['href']  # 뉴스 방 꺽쇠 안에 숨겨진 '기사 URL 주소' 추출
        
        # [핵심] 추출한 제목과 링크를 맨 위에서 만든 빈 바구니에 하나씩 추가(.append)합니다.
        title_list.append(news_title)
        link_list.append(news_link)
        
    print("👉 실시간 뉴스 데이터 추출 성공!")
    print("\n2단계: 수집된 데이터를 바탕으로 엑셀 표(DataFrame) 제작 시작...")
    
    # 3. 판다스(pd)의 데이터프레임 기능을 사용하여 가상의 엑셀 표 서식을 조립합니다.
    # 딕셔너리 형태 {'열 이름': 데이터 리스트} 구조를 사용하여 예쁜 바둑판 표를 만듭니다.
    raw_data = {
        '뉴스 제목': title_list,
        '기사 링크 주소': link_list
    }
    df = pd.DataFrame(raw_data)
    
    print("👉 가상 엑셀 표 조립 완료! 이제 컴퓨터에 물리 파일로 저장합니다.")
    print("------------------------------------------------------------")
    
    # 4. [최종 치트키] 데이터프레임 상자에 담긴 표를 진짜 엑셀 파일로 뽑아냅니다.
    # index=False 옵션은 엑셀 맨 왼쪽에 파이썬 자체 일련번호(0, 1, 2...) 행번호가 추가되는 것을 막아 깔끔하게 만들어줍니다.
    df.to_excel(output_filename, index=False)
    
    print(f"🎉 축하합니다! '{output_filename}' 파일이 성공적으로 저장되었습니다.")
    print(f"총 {len(df)}개의 뉴스 데이터가 안전하게 보관되었습니다.")
    
else:
    print(f"네이버 서버 접속에 에러가 발생했습니다. 에러코드: {response.status_code}")
    

4. 왕초보 독자분들이 가장 많이 하는 질문과 에러 해결법 (FAQ)

코드를 실행하다가 막히는 분들을 위해 가장 흔하게 발생하는 에러와 대처법 두 가지를 아주 세세하게 정리해 두었으니 문제 발생 시 참고해 보세요.

  • Q1. 코드를 실행했는데 에러는 안 나고 엑셀 파일이 안 보여요! 어디로 갔나요?
    👉 주소를 따로 지정하지 않으면, 파이썬은 현재 이 파이썬 코드 파일(`.py`)이 저장되어 실행된 바로 그 폴더 내부에 엑셀 파일을 함께 생성합니다. 작업하고 계신 프로젝트 폴더를 새로고침 해보시면 파일이 짠 하고 나타나 있을 것입니다.
  • Q2. PermissionError: [Errno 13] Permission denied 에러가 떠요!
    👉 이 에러는 99% "파이썬이 저장하려는 그 이름의 엑셀 파일을 사용자가 이미 컴퓨터에서 더블클릭해 열어두고 있을 때" 발생합니다. 윈도우가 파일 편집 권한을 막아버리기 때문에 발생하는 현상이므로, 열려 있는 엑셀 창을 완전히 닫고 파이썬 코드를 다시 실행하시면 거짓말처럼 해결됩니다.

당신을 위한 실무 자동화 가이드

마치며

단순히 화면에 글자를 띄우는 반쪽짜리 크롤러에서, 이제 언제든 꺼내 보고 남에게 공유할 수도 있는 완벽한 엑셀 자동 보고서 형태의 파일 크롤러로 진화했습니다! 업무 효율이 수십 배는 더 뛰어오른 셈입니다.

데이터를 모으고 저장하는 완벽한 저장소까지 갖추었으니 이제 기술의 폭을 한 단계 더 넓힐 차례입니다. 다음 단원(Step 5)에서는 스크롤을 끝없이 내려야만 글자가 나타나는 인스타그램이나 유튜브, 혹은 실시간 댓글창처럼 까다로운 '동적 웹사이트'를 크롤링하는 강력한 무기(Selenium)에 대해 알아보겠습니다. 오늘 엑셀 파일 생성에 성공하셨다면 폴더에 만들어진 이쁜 파일 스크린샷과 함께 댓글로 성공 소식을 자랑해 주세요! 감사합니다.

 

2026.05.18 - [분류 전체보기] - [파이썬 자동화] 실전 크롤링! 네이버에서 '반도체 최신 뉴스' 10개 실시간으로 긁어오기

 

[파이썬 자동화] 실전 크롤링! 네이버에서 '반도체 최신 뉴스' 10개 실시간으로 긁어오기

ADVERTISEMENT안녕하세요! 지난 1, 2단원을 통해 웹페이지 소스코드를 가져오고, 그 안에서 원하는 글자만 쏙 솎아내는 기초 체력을 단단히 길렀습니다. 기억나시죠?기초를 다졌으니 이제 실전에 써

mumuverse.tistory.com

2026.05.13 - [분류 전체보기] - [파이썬 자동화] 엑셀 노가다 탈출! 수만 행 데이터에서 특정 조건만 1초 만에 뽑기 (필터링 코드 공유)

 

[파이썬 자동화] 엑셀 노가다 탈출! 수만 행 데이터에서 특정 조건만 1초 만에 뽑기 (필터링 코드

ADVERTISEMENT 안녕하세요! 어제 공유해 드린 '엑셀 파일 합치기' 포스팅은 잘 활용해 보셨나요? 파일을 하나로 합쳤다면, 이제 그 방대한 데이터 속에서 내가 원하는 정보만 쏙쏙 골라낼 차례입니다

mumuverse.tistory.com

2026.05.15 - [분류 전체보기] - [파이썬 자동화] 엑셀 수치 데이터를 클릭 한 번에 '그래프'로 시각화하기 (보고서 자동화)

 

[파이썬 자동화] 엑셀 수치 데이터를 클릭 한 번에 '그래프'로 시각화하기 (보고서 자동화)

ADVERTISEMENT안녕하세요! 지난 포스팅에서 엑셀 파일을 합치고(Merge), 원하는 데이터를 추출(Filter)하는 법을 알아보았습니다. 하지만 진정한 보고서의 완성은 눈에 띄는 '차트'와 '그래프'겠죠?오늘

mumuverse.tistory.com

 

반응형