레이블이 파이썬인 게시물을 표시합니다. 모든 게시물 표시
레이블이 파이썬인 게시물을 표시합니다. 모든 게시물 표시

파이썬을 활용한 '키워드 수집 → 뉴스 검색 → 본문 추출 과정'

파이썬을 활용한 '키워드 수집 → 뉴스 검색 → 본문 추출 과정'

파이썬을 활용해 "키워드 수집 → 뉴스 검색 → 본문 추출"로 이어지는 데이터 수집 자동화 과정을 단계별 코드 예시와 함께 설명해 드릴게요.


1. 파이썬 환경 및 라이브러리 준비

먼저 데이터를 수집하고 API를 다루기 위해 필요한 도구들을 설치해야 합니다.

Bash
pip install requests beautifulsoup4 pandas

2. API를 활용한 키워드 수집 (구글 트렌드 예시)

네이버 API는 승인이 필요하므로, 여기서는 라이브러리를 통해 접근 가능한 Google Trends 방식으로 키워드를 가져오는 흐름을 보여드립니다.

Python
import requests
from bs4 import BeautifulSoup
defget_realtime_keywords():
 # 구글 트렌드 RSS 피드 등을 활용해 급상승 키워드를 가져오는 로직 (예시)
 url = "https://trends.google.com/trends/trendingsearches/daily/rss?geo=KR"
 response = requests.get(url)
 soup = BeautifulSoup(response.content, "xml")
 keywords = [item.title.get_text() for item in soup.find_all("item")]
 return keywords[:5] # 상위 5개 키워드 반환
print(get_realtime_keywords())

3. 뉴스 데이터 수집 (네이버 뉴스 검색 API 활용)

가장 핵심적인 부분입니다. 네이버 개발자 센터에서 발급받은 Client IDSecret을 사용합니다.

Python
import os
import requests
defsearch_news(query):
 client_id = "YOUR_CLIENT_ID"
 client_secret = "YOUR_CLIENT_SECRET"
 # 네이버 뉴스 검색 API 엔드포인트
 url = f"https://openapi.naver.com/v1/search/news.json?query={query}&display=3&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()['items'] # 뉴스 제목, 링크, 요약 정보 반환
 else:
 print("Error Code:" + str(response.status_code))
 returnNone
# '비트코인' 관련 최신 뉴스 3개 가져오기
news_list = search_news("비트코인")

4. 뉴스 본문 크롤링 (BeautifulSoup 활용)

API가 제공하는 것은 '요약'일 뿐입니다. AI가 풍부한 내용을 쓰게 하려면 원문 링크에 접속해 본문을 긁어와야 합니다.

Python
defget_news_content(url):
 try:
 headers = {"User-Agent": "Mozilla/5.0"}
 res = requests.get(url, headers=headers)
 soup = BeautifulSoup(res.text, "html.parser")
 # 일반적인 뉴스 사이트의 본문 태그를 찾아 추출 (사이트마다 다를 수 있음)
 # 예: <article> 혹은 class가 'article_view'인 부분
 content = soup.find('article') or soup.find('div', class_='article_body')
 return content.get_text(strip=True) if content else"본문을 찾을 수 없습니다."
 except:
 return"접근 제한된 사이트입니다."
# 첫 번째 뉴스 기사의 본문 가져오기
if news_list:
 full_text = get_news_content(news_list[0]['link'])
 print(full_text[:200]) # 앞부분 200자만 출력

5. 요약 및 다음 단계 연동

이렇게 수집된 full_text를 이제 OpenAI GPT API로 넘겨주면 됩니다.

  1. Input: 수집된 뉴스 본문 + 키워드

  2. Prompt: "위 뉴스 내용을 바탕으로 블로그 포스팅을 작성해줘. 말투는 친근하게 해주고 관련 해시태그도 5개 뽑아줘."

  3. Output: AI가 작성한 블로그 글 완성

구현 시 주의사항

  • Rate Limit: API는 호출 횟수 제한이 있습니다. 너무 빠르게 요청하면 차단될 수 있으니 time.sleep(1) 등을 사용해 간격을 두세요.

  • robots.txt: 크롤링 전 해당 사이트가 자동 수집을 허용하는지 확인해야 합니다. (네이버 뉴스 API를 통해 제공되는 링크는 대부분 요약본 활용을 권장합니다.)

이 코드를 하나의 파일로 합쳐 for문을 돌리면, 1분 안에 수십 개의 뉴스 본문을 수집하는 자동화 파이프라인의 기초가 완성됩니다! 혹시 특정 단계(예: GPT 연동 코드)가 더 궁금하신가요?