파이썬과 네이버 API로 시작하는 데이터 자동화 기초

파이썬과 네이버 API로 시작하는 데이터 자동화 기초

marketingtok.kr 독자 여러분, 매일 수많은 뉴스를 직접 검색하고 정리하는 데 지치셨나요? 마케터, 비즈니스 블로거, 데이터 분석가 모두에게 트렌드 파악은 필수적이지만 이를 수동으로 하는 것은 엄청난 시간 낭비입니다.

이번 글에서는 파이썬(Python)의 강력한 라이브러리인 BeautifulSoup네이버 검색 API를 결합하여, 내가 원하는 키워드의 뉴스 데이터를 단 몇 초 만에 자동으로 수집하는 기초 단계를 마스터해 보겠습니다. 이 과정을 이해하고 나면 자동화 시스템을 통해 남들보다 한발 앞선 트렌드 선점과 효율적인 콘텐츠 생산 능력을 얻게 될 것입니다.

1. 환경 구축 및 API 키 발급받기

데이터 수집을 시작하기 전에 파이썬이 데이터를 요청하고 받아올 수 있는 환경을 만들어야 합니다.

필수 라이브러리 설치

파이썬이 깔려 있는 환경(터미널 또는 커맨드 창)에서 아래 명령어를 입력하여 데이터를 주고받고(requests), 가공하며(BeautifulSoup, pandas), 결과를 정제할 도구들을 설치합니다.

Bash
pip install requests beautifulsoup4 pandas lxml

네이버 개발자 센터 API 신청

네이버 오픈 API를 사용하려면 고유의 자격 증명 키가 필요합니다.

  1. 네이버 개발자 센터에 접속하여 로그인합니다.

  2. Application -> 애플리케이션 등록 메뉴로 이동합니다.

  3. 애플리케이션 이름(예: News_Automation)을 입력하고, 사용 API에서 검색을 선택합니다.

  4. 비로그인 오픈 API 서비스 환경에서 웹 설정을 선택한 뒤, 다운로드 URL에는 임의의 주소(예: http://localhost)를 적어줍니다.

  5. 등록이 완료되면 발급되는 Client IDClient Secret 값을 복사하여 안전한 곳에 저장해 둡니다.

2. 네이버 뉴스 검색 API 연동 및 본문 추출 (실전 코드)

준비가 끝났다면 이제 API로 뉴스 목록을 가져온 뒤, BeautifulSoup로 실제 뉴스 본문까지 긁어오는 파이썬 스크립트를 작성할 차례입니다.

Python
import requests
from bs4 import BeautifulSoup
import time
import pandas as pd

# 1. 발급받은 네이버 API 키 입력
CLIENT_ID = "YOUR_NAVER_CLIENT_ID"
CLIENT_SECRET = "YOUR_NAVER_CLIENT_SECRET"

def search_naver_news(query, display_count=3):
    """네이버 API를 통해 특정 키워드의 뉴스 검색 결과를 가져옵니다."""
    url = f"https://openapi.naver.com/v1/search/news.json?query={query}&display={display_count}&sort=sim"
    headers = {
        "X-Naver-Client-Id": CLIENT_ID,
        "X-Naver-Client-Secret": CLIENT_SECRET
    }
    
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        return response.json().get('items', [])
    else:
        print(f"API 요청 실패 (에러 코드: {response.status_code})")
        return []

def extract_news_content(url):
    """뉴스 원문 링크에 접속하여 본문 텍스트를 추출합니다."""
    try:
        # 봇(Bot)으로 오인받아 차단되는 것을 방지하기 위한 헤더 설정
        headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}
        res = requests.get(url, headers=headers, timeout=5)
        soup = BeautifulSoup(res.text, "html.parser")
        
        # 주요 언론사의 본문 태그 영역 지정 (네이버 뉴스 플랫폼 기준)
        content = soup.find('article') or soup.find('div', id='dic_area') or soup.find('div', id='articleBodyContents')
        
        if content:
            return content.get_text(strip=True)[:800]  # 가독성을 위해 앞 800자만 추출
        return "본문 태그를 찾을 수 없습니다."
    except Exception as e:
        return f"접속 실패 ({str(e)})"

def run_collector(keyword):
    """검색부터 본문 수집, 저장까지의 프로세스를 총괄합니다."""
    print(f"🚀 '{keyword}' 관련 뉴스 데이터 수집을 시작합니다...")
    news_items = search_naver_news(keyword)
    
    collected_data = []
    for item in news_items:
        # API 결과에 포함된 HTML 특수 태그 제거
        clean_title = item['title'].replace("<b>", "").replace("</b>", "").replace("&quot;", '"')
        print(f"🔗 수집 중: {clean_title}")
        
        # 본문 크롤링 실행
        full_content = extract_news_content(item['link'])
        
        collected_data.append({
            "title": clean_title,
            "link": item['link'],
            "content": full_content
        })
        time.sleep(1) # 무리한 요청으로 인한 차단 방지 (디레이 주입)
        
    # 결과 저장
    df = pd.DataFrame(collected_data)
    df.to_csv("naver_news_result.csv", index=False, encoding="utf-8-sig")
    print("✅ 데이터 수집 및 csv 저장 완료!")

if __name__ == "__main__":
    # 원하는 키워드를 넣어 실행하세요
    run_collector("인공지능 비즈니스")

3. 핵심 크롤링 주의사항 및 데이터 활용법

자동화 코드를 완성했더라도 안정적으로 운영하기 위해서는 다음 두 가지 규칙을 반드시 준수해야 합니다.

  • 크롤링 매너와 타임아웃: 웹사이트 서버에 짧은 시간 동안 수백 건의 요청을 보내면 공격 행위로 간주되어 IP가 차단될 수 있습니다. 코드 내 time.sleep(1)과 같이 요청 사이에 적절한 공백을 두고, timeout=5 설정을 통해 먹통이 된 사이트에서 무한 대기하는 현상을 방지해야 합니다.

  • 뉴스 저작권 보호: 수집한 뉴스 본문을 그대로 자신의 블로그나 웹사이트에 복사하여 붙여넣는 행위는 심각한 저작권 위반입니다. 추출한 본문 데이터는 시장 조사용 내부 자료로만 활용하거나, LLM(예: ChatGPT, Gemini) API와 연동하여 핵심 내용을 완전히 새로운 문장과 인사이트로 재구성(Rewriting)하여 발행하는 방식을 취해야 합니다.

결론 및 뉴스레터 구독 안내

파이썬과 네이버 API를 결합한 이 기초적인 파이프라인은 여러분만의 콘텐츠 자동화 공장을 짓기 위한 든든한 주춧돌이 됩니다. 여기서 한 단계 더 나아가면, 수집된 텍스트를 AI에게 전달해 자동으로 요약본을 만들고 블로그에 임시 저장까지 해두는 완전 자동화 프로세스를 완성할 수 있습니다.

💡 비즈니스 생산성을 200% 끌어올리는 자동화 치트키! 복잡한 코딩 없이도 마케팅과 데이터 수집을 자동화하는 n8n 활용법, 최신 AI 프롬프트 가이드를 가장 먼저 받아보고 싶으시다면 지금 메일침프 뉴스레터를 구독하세요. 시대를 앞서가는 비즈니스 인사이트를 매주 메일함으로 배달해 드립니다!

🔗 함께 읽으면 좋은 글

처음으로
 

n8n 기반, 뉴스 수집 및 AI 자동화 파이프라인 구축 가이드

n8n 기반,  뉴스 수집 및 AI 자동화 파이프라인 구축 가이드

앞서 파이썬 코드로 구현했던 '키워드 수집 → 뉴스 검색 → 본문 추출 → AI 요약' 프로세스는 코드를 계속 유지보수하고 서버를 관리해야 하는 번거로움이 있습니다. n8n을 활용하면 복잡한 파이썬 코드를 최소화하고, 각 단계를 시각적인 노드(Node)로 연결하여 강력한 자동화 워크플로우를 구축할 수 있습니다.


마케팅톡.kr 독자 분들이 이 글을 통해 개발 서버 없이도 매일 자동으로 트렌드 뉴스를 수집하고 콘텐츠를 생산하는 자동화 시스템을 완전히 구축할 수 있도록 핵심 절차를 상세히 안내해 드립니다.

1. 전체 워크플로우 아키텍처 및 준비 사항

n8n에서 구현할 자동화 파이프라인은 다음과 같은 흐름으로 연결됩니다. 파이썬의 for문과 requests 모듈이 했던 역할을 n8n의 기본 노드들이 대신하게 됩니다.

사전 준비 사항::

  • n8n 환경: n8n Cloud 계정 또는 로컬/서버에 설치된 n8n 대시보드

  • 네이버 개발자 센터: Search API 이용을 위한 Client IDClient Secret

  • OpenAI API Key: 수집된 본문을 요약하고 블로그 글로 재구성하기 위한 API 키

2. n8n 노드별 상세 구축 절차

단계 1: 일정 시간마다 실행하기 (Schedule Trigger 노드)

자동화 공장이 매일 정해진 시간에 스스로 작동하도록 시작점을 만듭니다.

  1. n8n 캔버스에서 Schedule Trigger 노드를 추가합니다.

  2. Trigger IntervalDaily 또는 Every Hour 등 원하는 주기로 설정합니다 (예: 매일 오전 8시).

단계 2: 구글 트렌드 RSS 키워드 수집 (HTTP Request 노드)

파이썬의 BeautifulSoup 대신 n8n의 HTTP 요청 노드로 RSS 피드를 가져옵니다.

  1. HTTP Request 노드를 추가하고 아래와 같이 설정합니다.

    • Method: GET

    • URL: https://trends.google.com/trends/trendingsearches/daily/rss?geo=KR

    • Response Format: Text (RSS는 XML 형식이므로 우선 텍스트로 받습니다)

  2. 바로 뒤에 XML 노드를 추가하여 방금 가져온 텍스트 데이터를 n8n이 인식할 수 있는 JSON 객체로 파싱합니다.

  3. Item Lists 노드를 추가하여 RSS의 <item> 태그 내에 있는 급상승 검색어(title)만 상위 5개로 슬라이싱(Split Out)합니다.

단계 3: 네이버 뉴스 검색 API 연동 (HTTP Request 노드)

수집된 키워드를 기반으로 네이버 뉴스를 검색합니다. 이 단계부터는 n8n이 루프(Loop)를 돌며 각 키워드별로 검색을 수행합니다.

  1. 새로운 HTTP Request 노드를 추가합니다.

  2. URL 설정에 이전 노드의 키워드 동적 변수(Expression)를 주입합니다:

    Plaintext
    https://openapi.naver.com/v1/search/news.json?query={{ $json.title }}&display=3&sort=sim
    
  3. Authentication 섹션에서 헤더(Headers)를 추가합니다:

    • X-Naver-Client-Id: 여러분의 네이버 클라이언트 ID

    • X-Naver-Client-Secret: 여러분의 네이버 클라이언트 시크릿

  4. 결과 값으로 나오는 뉴스 아이템 목록을 다시 Item Lists 노드를 활용해 개별 뉴스 링크 단위로 쪼개줍니다.

단계 4: 뉴스 본문 크롤링 (HTTP Request & HTML 노드)

뉴스 원문 링크(Link)에 접속하여 본문 텍스트를 추출하는 핵심 구간입니다.

  1. HTTP Request 노드를 추가하고 URL{{ $json.link }}를 입력합니다.

  2. HeadersUser-Agent: Mozilla/5.0 ...을 입력하여 크롤링 차단을 방지합니다.

  3. 요청 결과로 받은 HTML을 파싱하기 위해 HTML 노드를 연결합니다.

    • Action: Extract Element Values

    • Extraction Values: 일반적인 뉴스 본문 영역을 지정해야 합니다. 네이버 뉴스 원문 레이아웃을 타겟팅할 경우 CSS Selector#dic_area 또는 #articleBodyContents, 일반 웹사이트의 경우 article을 입력합니다.

    • Return Value: Text

단계 5: OpenAI GPT를 통한 콘텐츠 재구성 (OpenAI 노드)

크롤링한 본문 그대로를 사용하면 저작권 문제가 발생하므로, AI를 통해 완벽히 새로운 문서로 변환합니다.

  1. OpenAI 노드를 추가하고 ResourceChat, OperationConverse로 설정합니다.

  2. Modelgpt-4o 또는 생성 비용이 저렴한 모델을 선택합니다.

  3. Prompt 구성에 수집된 뉴스 본문 변수를 넣고 페르소나를 부여합니다:

    System Prompt: "너는 IT 및 비즈니스 전문 블로거야. 입력된 뉴스 본문을 바탕으로 독자에게 유익한 정보성 블로그 글을 작성해줘." 

    User Prompt: "뉴스 본문: {{ $json.extracted_text }}\n\n위 내용을 바탕으로 친근한 어조의 블로그 글을 작성하고 관련 태그 5개를 추가해줘."

단계 6: 데이터 저장 및 자동 발행 (구글 시트 또는 워드프레스 노드)

최종 완성된 원고를 사람이 검수하거나 자동으로 발행할 수 있도록 저장합니다.

  1. Google Sheets 노드를 추가하여 Append 모드로 설정한 뒤, 키워드, 뉴스 링크, AI가 작성한 본문을 열에 맞춰 차곡차곡 누적합니다.

  2. (선택 사항) 검수 없이 바로 발행하고 싶다면 WordPress 노드나 Ghost 노드를 연결하여 즉시 임시글로 등록되도록 세팅할 수 있습니다.

3. n8n 구축 시 필수 고려사항 및 팁

  • 에러 핸들링 (Error Trigger): 특정 뉴스 사이트는 크롤링을 강하게 차단하여 HTTP Request 노드가 실패할 수 있습니다. 노드 설정 내 Node Settings → On Error 옵션을 Continue Regular Workflow로 변경하여, 하나의 뉴스 추출이 실패해도 전체 프로세스가 멈추지 않고 다음 뉴스로 넘어가도록 조치해야 합니다.

  • 데이터 가공용 코드 스니펫 (Code 노드): 네이버 API 결과값에 포함된 태그(<b>, </b>)나 특수문자를 정제하고 싶을 때는, 중간에 Code 노드(JavaScript/Python 선택 가능)를 추가하여 간단한 정규식 스크립트를 실행해 주는 것이 좋습니다.

    JavaScript
    // n8n Code 노드 (JavaScript 예시) - HTML 태그 제거
    for (const item of $input.all()) {
      item.json.title = item.json.title.replace(/<\/?[^>]+(>|$)/g, "");
    }
    return $input.all();
    

결론 및 뉴스레터 구독 안내

n8n을 활용한 자동화 파이프라인 구축은 초기 세팅만 완료해 두면 매일 알아서 트렌드를 분석하고 글감 소재를 발굴하는 최고의 비즈니스 레버리지가 됩니다. 코딩에 대한 부담은 줄이면서도 시스템의 안정성은 극대화할 수 있는 n8n의 매력을 여러분의 업무에 직접 적용해 보세요.

💡 비즈니스 자동화와 SEO 최적화 노하우를 가장 빠르게 받는 방법! 매주 실무에 바로 적용할 수 있는 n8n 워크플로우 템플릿과 AI 프롬프트 엔지니어링 팁을 전해드립니다. 지금 메일침프 뉴스레터를 구독하고 디지털 자동화 공장을 구축하는 전문가로 성장해 보세요!

🔗 함께 읽으면 좋은 글


처음으로