이 튜토리얼에서는 다음을 살펴보게 됩니다:
이 튜토리얼에서는 다음을 살펴보게 됩니다:
- 뉴스 스크레이퍼의 정의와 유용성
- 스크래핑으로 수집 가능한 데이터 유형
- 웹 뉴스 스크레이퍼 구축을 위한 두 가지 가장 일반적인 접근 방식
- AI를 활용한 뉴스 스크래핑 프로세스 구축 방법
- 파이썬으로 뉴스 스크래핑 스크립트 작성 방법
- 뉴스 기사 스크래핑의 어려움
자, 시작해 보겠습니다!
뉴스 스크레이퍼란 무엇인가요?
뉴스 스크레이퍼는 뉴스 사이트에서 데이터를 추출하는 자동화 도구입니다. 헤드라인, 게시일, 작성자, 태그, 기사 내용 등의 정보를 수집합니다.
뉴스 스크레이퍼는 웹 스크래핑을 위해 인공지능(AI)과 여러 프로그래밍 언어로 구축될 수 있습니다. 수동 데이터 수집에 비해 시간을 절약해 주기 때문에 연구, 트렌드 분석 또는 뉴스 애그리게이터 구축에 널리 사용됩니다.
뉴스 기사에서 추출할 데이터
뉴스 기사에서 추출할 수 있는 데이터는 다음과 같습니다:
- 헤드라인: 기사의 주요 제목과 부제목.
- 발행일: 기사가 게시된 날짜.
- 작성자: 콘텐츠를 작성한 작가 또는 기자의 이름.
- 본문: 기사의 본문 텍스트.
- 태그/주제: 기사와 관련된 키워드 또는 카테고리.
- 멀티미디어 첨부 파일: 기사와 함께 제공되는 시각적 요소.
- URL: 관련 기사나 참고 자료로의 링크.
- 관련 기사: 현재 기사와 연결되거나 유사한 다른 뉴스.
뉴스 스크레이퍼 구축 방법
뉴스 기사에서 데이터를 자동으로 추출하는 솔루션을 구축할 때 두 가지 주요 접근 방식이 있습니다:
- 데이터 추출을 위한 AI 활용
- 맞춤형 스크래핑 스크립트 구축
두 방법을 소개하고 각각의 장단점을 살펴보겠습니다. 자세한 구현 단계는 본 가이드 후반부에서 확인할 수 있습니다.
AI 활용
이 접근 방식의 핵심은 뉴스 기사의 HTML 콘텐츠를 AI 모델에 제공하여 데이터를 추출하는 것입니다. 또는 뉴스 기사 URL을 LLM(대규모 언어 모델) 제공업체에 전달하고 제목 및 주요 내용과 같은 핵심 정보를 추출하도록 요청할 수도 있습니다.
👍 장점:
- 거의 모든 뉴스 사이트에서 작동
- 전체 데이터 추출 과정을 자동화합니다
- 원본 들여쓰기, 제목 구조, 굵게 처리 및 기타 스타일 요소를 포함한 서식 유지 가능
👎 단점:
- 고급 AI 모델은 독점적이며 비용이 많이 들 수 있음
- 스크래핑 프로세스에 대한 완전한 통제권이 없습니다
- 결과에 허위 정보(정확하지 않거나 조작된 정보)가 포함될 수 있음
사용자 정의 스크래핑 스크립트 활용
여기서의 목표는 특정 뉴스 출처 사이트를 대상으로 하는 스크래핑 봇을 수동으로 코딩하는 것입니다. 이러한 스크립트는 대상 사이트에 연결하여 뉴스 페이지의 HTML을 파싱하고, 그로부터 데이터를 추출합니다.
👍 장점:
- 데이터 추출 과정을 완전히 통제할 수 있음
- 특정 요구사항에 맞게 조정 가능
- 제3자 공급자에 의존하지 않아 비용 효율적
👎 단점:
- 설계 및 유지 관리에 기술적 지식이 필요함
- 각 뉴스 사이트마다 전용 스크래핑 스크립트가 필요함
- 경계 사례(예: 실시간 기사) 처리 시 어려움 발생 가능
접근법 #1: AI를 활용한 뉴스 스크래핑
핵심은 AI가 복잡한 작업을 대신 처리하도록 하는 것입니다. 크롤링 기능을 갖춘최신 버전의 ChatGPT같은 프리미엄 LLM 도구를 직접 사용하거나, 스크립트에 AI 모델을 통합하는 방식으로 구현할 수 있습니다. 후자의 경우 기본적인 스크립트 작성 능력과 기술적 지식이 추가로 필요합니다.
AI 기반 뉴스 스크래핑 과정에는 일반적으로 다음과 같은 단계가 포함됩니다:
- 데이터 수집: HTTP 클라이언트를 사용해 대상 페이지의 HTML을 가져옵니다. 크롤링 기능이 있는 ChatGPT 같은 도구를 사용한다면 이 단계는 자동화되며, 뉴스 URL만 전달하면 됩니다.
- 데이터 전처리: HTML을 처리할 경우 AI에 입력하기 전에 콘텐츠를 정리합니다. 불필요한 스크립트, 광고, 스타일을 제거하는 작업이 포함될 수 있습니다. 제목, 작성자 이름, 본문 등 페이지의 핵심 부분에 집중하세요.
- AI 모델에 데이터 전송: ChatGPT와 같은 브라우징 기능이 있는 도구의 경우, 기사의 URL과 함께 잘 작성된 프롬프트를 제공하기만 하면 됩니다. AI가 페이지를 분석하여 구조화된 데이터를 반환합니다. 또는 정리된 HTML 콘텐츠를 AI 모델에 입력하고 추출할 내용에 대한 구체적인 지시를 내릴 수도 있습니다.
- AI 출력 처리: AI 응답은 종종 비구조화되거나 반구조화된 형태입니다. 스크립트를 활용해 출력을 원하는 형식으로 가공하고 포맷팅하세요.
- 스크랩된 데이터 내보내기: 구조화된 데이터를 데이터베이스, CSV 파일 또는 기타 저장 솔루션 등 원하는 형식으로 저장하세요.
자세한 내용은 웹 스크래핑에 AI를 활용하는 방법에 관한 당사 글을 참고하십시오.
접근법 #2: 뉴스 스크래핑 스크립트 구축하기
뉴스 스크레이퍼를 수동으로 구축하려면 먼저 대상 사이트에 익숙해져야 합니다. 뉴스 페이지를 분석하여 그 구조, 스크레이핑 가능한 데이터, 사용할 스크레이핑 도구를 파악하세요.
간단한 뉴스 사이트의 경우 다음 두 가지로 충분합니다:
- Requests: HTTP 요청을 보내는 파이썬 라이브러리입니다. 웹페이지의 원시 HTML 콘텐츠를 가져올 수 있게 해줍니다.
- Beautiful Soup: HTML 및 XML 문서를 파싱하는 파이썬 라이브러리입니다. 페이지의 HTML 구조를 탐색하고 데이터를 추출하는 데 도움이 됩니다. Beautiful Soup 스크래핑 가이드에서 자세히 알아보세요.
Python에서 설치하는 방법은 다음과 같습니다:
pip install requests beautifulsoup4
봇 방지 기술을 사용하거나 자바스크립트 실행이 필요한 뉴스 사이트의 경우 Selenium과 같은 브라우저 자동화 도구를 사용해야 합니다. 자세한 안내는 Selenium 스크래핑 가이드를 참조하세요.
Python에서 Selenium을 설치하려면 다음 명령어를 사용하세요:
pip install selenium
이 경우 프로세스는 다음과 같습니다:
- 대상 사이트에 연결: 페이지의 HTML을 가져와 파싱합니다.
- 관심 요소 선택: 페이지에서 특정 요소(예: 제목, 콘텐츠)를 식별합니다.
- 데이터 추출: 해당 요소에서 원하는 정보를 추출합니다.
- 스크랩된 데이터 정리: 필요한 경우 불필요한 내용을 제거하기 위해 데이터를 처리합니다.
- 스크랩한 뉴스 기사 데이터 내보내기: JSON 또는 CSV 등 원하는 형식으로 데이터를 저장합니다.
다음 장에서는 CNN, 로이터, BBC에서 데이터를 추출하는 Python 뉴스 스크래핑 스크립트 예시를 살펴보게 될 것입니다!
CNN 스크래핑
대상 뉴스 기사: “북극 한파가 추수감사절 주말을 겨냥하며 축축하고 엉망인 날씨가 추운 북동부를 덮쳤다”

CNN은 특별한 스크래핑 방지 조치를 시행하지 않습니다. 따라서 Requests와 Beautiful Soup을 사용하는 간단한 스크립트로 충분합니다:
import requests
from bs4 import BeautifulSoup
import json
# CNN 기사 URL
url = "https://www.cnn.com/2024/11/28/weather/thanksgiving-weekend-weather-arctic-storm/index.html"
# 기사 페이지에 HTTP GET 요청 전송
response = requests.get(url)
# 페이지의 HTML 콘텐츠 파싱
soup = BeautifulSoup(response.content, "html.parser")
# 제목 추출
title_element = soup.select_one("h1")
title = title_element.get_text(strip=True)(strip=True)
# 기사 본문 추출
article_content = soup.select_one(".article__content")
content = article_content.get_text(strip=True)
# JSON으로 내보낼 데이터 준비
article = {
"title": title,
"content": content
}
# JSON 파일로 데이터 내보내기
with open("article.json", "w", encoding="utf-8") as json_file:
json.dump(article, json_file, ensure_ascii=False, indent=4)
스크립트를 실행하면 다음 내용을 포함한 JSON 파일이 생성됩니다:
{
"title": "추운 추수감사절 주말을 겨냥한 북극 한파가 북동부를 축축하고 엉망진창인 날씨로 뒤덮다",
"content": "CNN—추수감사절에 북동부가 혹독한 비나 눈으로 강타당한 후, 이번 주말 여행객들이 집으로 돌아갈 무렵까지 북극의 매서운 한파가 전국 대부분을 뒤덮을 전망이다. ... (생략)"
}
와! 방금 CNN을 스크래핑했네요.
로이터 스크래핑
대상 뉴스 기사: “마크롱, 파리 노트르담 대성당 복원 공로로 장인들 칭송“
로이터는 브라우저에서 오지 않는 모든 요청을 차단하는 특수한 봇 방지 솔루션을 보유하고 있음을 유의하십시오. Requests 또는 기타 Python HTTP 클라이언트를 사용하여 자동화된 요청을 시도하면 다음과 같은 오류 페이지를 받게 됩니다:
<html><head><title>reuters.com</title><style>#cmsg{animation: A 1.5s;}@keyframes A{0%{opacity:0;}99%{opacity:0;}100%{opacity:1;}}</style></head><body style="margin:0"><p id="cmsg">자바스크립트를 활성화하고 광고 차단기를 비활성화해 주세요</p><script data-cfasync="false">var dd={'rt':'c','cid':'AHrlqAAAAAMAjfxsASop65YALVAczg==','hsh':'2013457ADA70C67D6A4123E0A76873','t':'fe','s':46743,'e':'da7ef98f4db57c2e85c7ae9df5bf374e4b214a77c73ee80d700757e60962367f','host':'geo.captcha-delivery.com','cookie':'lperXjdnamczWV5K~_ghwm4FDVstzxj76zglHEWJSBJjos3qpM2P8Ir0eNn5g9yh159oMTwy9UaWuWgflgV51uAJZKzO7JJuLN~xg2wken37VUTvL6GvZyl89SNuHrSF'}</script><script data-cfasync="false" src="https://ct.captcha-delivery.com/c.js"></script></body></html>
따라서 로이터의 뉴스 기사를 스크래핑하려면 셀레늄(Selenium)과 같은 브라우저 자동화 도구를 사용해야 합니다. 방법은 다음과 같습니다:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
import json
# WebDriver 초기화
driver = webdriver.Chrome(service=Service())
# 로이터 기사 URL
url = "https://www.reuters.com/world/europe/excitement-relief-paris-notre-dame-cathedral-prepares-reopen-2024-11-29/"
# 브라우저에서 URL 열기
driver.get(url)
# <h1> 태그에서 제목 추출
title_element = driver.find_element(By.CSS_SELECTOR, "h1")
title = title_element.text
# 모든 텍스트 요소 선택
paragraph_elements = driver.find_elements(By.CSS_SELECTOR, "[data-testid^="paragraph-"]")
# 텍스트를 통합
content = " ".join(p.text for p in paragraph_elements)
# JSON으로 내보낼 데이터 준비
article = {
"title": title,
"content": content
}
# JSON 파일로 데이터 내보내기
with open("article.json", "w", encoding="utf-8") as json_file:
json.dump(article, json_file, ensure_ascii=False, indent=4)
위 스크립트를 실행하면(차단되지 않는 경우) 다음과 같은 article.json 파일이 출력됩니다:
{
"title": "마크롱, 파리 노트르담 대성당 복원 장인들 칭송",
"content": "파리, 11월 29일 (로이터) - 에마뉘엘 마크롱 프랑스 대통령은 금요일 파리 노트르담 대성당 재건에 기여한 1,000명 이상의 장인들을 칭송하며 이를 '세기의 프로젝트'라고 칭했다... (생략)"
}
훌륭합니다! 방금 로이터 통신 스크래핑을 수행하셨습니다.
BBC 스크래핑
대상 뉴스 기사: “블랙 프라이데이: 할인 상품을 알아보고 속지 않는 법”

CNN과 마찬가지로 BBC도 특정 봇 방지 솔루션이 마련되어 있지 않습니다. 따라서 HTTP 클라이언트와 HTML 파서 조합을 활용한 간단한 스크래핑 스크립트로 충분합니다:
import requests
from bs4 import BeautifulSoup
import json
# BBC 기사 URL
url = "https://www.bbc.com/news/articles/cvg70jr949po"
# 기사 페이지에 HTTP GET 요청 전송
response = requests.get(url)
# 페이지의 HTML 콘텐츠 파싱
soup = BeautifulSoup(response.content, "html.parser")
# 제목 추출
title_element = soup.select_one("h1")
title = title_element.get_text(strip=True)
# 기사 본문 내용 추출
article_content_elements = soup.select("[data-component="text-block"], [data-component="subheadline-block"]")
# 텍스트 통합
content = "n".join(ace.text for ace in article_content_elements)
# JSON으로 내보낼 데이터 준비
article = {
"title": title,
"content": content
}
# JSON 파일로 데이터 내보내기
with open("article.json", "w", encoding="utf-8") as json_file:
json.dump(article, json_file, ensure_ascii=False, indent=4)
실행하면 다음과 같은 article.json 파일이 생성됩니다:
{
"title": "블랙 프라이데이: 진짜 할인과 사기성 상품을 구분하는 법",
"content": "블랙 프라이데이 세일이 이미 한창인 가운데, 쇼핑 열기에 휩쓸려 돈을 낭비하기보다는 진짜 할인을 잡는 법을 알아보자... (생략)"
}
대단하네요! 방금 BBC 스크래핑을 해냈습니다.
뉴스 스크래핑의 과제와 극복 방안
위 예시에서는 몇몇 뉴스 사이트를 대상으로 기사 제목과 본문만 추출했습니다. 이처럼 단순한 방식은 뉴스 스크래핑을 쉽게 보이게 합니다. 하지만 실제로는 훨씬 복잡합니다. 대부분의 뉴스 웹사이트가 봇을 능동적으로 탐지하고 차단하기 때문입니다:

고려해야 할 몇 가지 과제는 다음과 같습니다:
- 스크래핑된 기사가 적절한 제목 구조를 유지하도록 보장
- 제목과 본문 외에도 태그, 작성자, 게시일 등의 메타데이터를 스크랩해야 함
- 다양한 웹사이트의 여러 기사를 효율적으로 처리하기 위해 스크래핑 프로세스를 자동화하십시오
이러한 과제를 해결하기 위해 다음과 같은 방법을 사용할 수 있습니다:
- 고급 기술 학습: Python으로 CAPTCHA 우회하는 가이드를 확인하고 스크래핑 튜토리얼을 통해 실용적인 팁을 탐색하세요.
- 고급 자동화 도구 활용: Playwright Stealth와 같은 강력한 도구를 사용하여 봇 방지 메커니즘이 적용된 사이트를 스크래핑하세요.
그러나 가장 효과적인 해결책은 전용 뉴스 스크레이퍼 API를 활용하는 것입니다.
Bright Data의 뉴스 스크레이퍼 API는 BBC, CNN, 로이터, Google 뉴스와 같은 주요 뉴스 소스를 스크래핑하기 위한 올인원 효율적인 솔루션을 제공합니다. 이 API를 사용하면 다음과 같은 작업을 수행할 수 있습니다:
- ID, URL, 헤드라인, 작성자, 주제 등 구조화된 데이터 추출
- 인프라, 프록시 서버, 웹사이트 차단에 대한 걱정 없이 스크래핑 프로젝트를 확장할 수 있습니다
- 차단 및 중단 문제에서 자유로워집니다
뉴스 스크래핑 프로세스를 간소화하고 중요한 일에 집중하세요—데이터 분석!
결론
이 글에서는 뉴스 스크래퍼가 무엇인지, 그리고 뉴스 기사에서 어떤 유형의 데이터를 추출할 수 있는지 알아보았습니다. 또한 AI 기반 솔루션이나 수동 스크립트를 사용하여 이를 구축하는 방법도 살펴보았습니다.
아무리 정교한 뉴스 스크래핑 스크립트를 사용하더라도 대부분의 사이트는 자동화된 활동을 감지하여 접근을 차단할 수 있습니다. 이 문제에 대한 해결책은 다양한 플랫폼에서 뉴스 데이터를 안정적으로 추출하도록 특별히 설계된 전용 뉴스 스크래퍼 API입니다.
이러한 API는 각 뉴스 출처에 맞춤화된 구조화되고 포괄적인 데이터를 제공합니다:
- CNN 스크레이퍼 API: 헤드라인, 작성자, 주제, 발행일, 콘텐츠, 이미지, 관련 기사 등의 데이터를 추출합니다.
- Google 뉴스 스크래퍼 API: 헤드라인, 주제, 카테고리, 작성자, 게시일, 출처 등의 정보를 수집합니다.
- 로이터 스크레이퍼 API: ID, URL, 작성자, 헤드라인, 주제, 발행일 등의 데이터를 검색합니다.
- BBC 스크레이퍼 API: 헤드라인, 작성자, 주제, 발행일, 콘텐츠, 이미지, 관련 기사 등의 세부 정보를 수집합니다.
스크레이퍼 구축이 선호되지 않는다면, 즉시 사용 가능한 뉴스 데이터셋을 고려해 보십시오. 이 데이터셋은 사전 컴파일되어 포괄적인 기록을 포함합니다:
- BBC 뉴스: 주요 데이터 포인트를 모두 포함하는 데이터셋으로, 수만 건의 기록을 제공합니다.
- CNN 뉴스: 핵심 데이터 포인트를 모두 포함하는 데이터셋으로, 수십만 건의 기록을 보유합니다.
- Google News: 주요 데이터 포인트를 모두 포함하는 데이터셋으로, 수만 건의 기록을 제공합니다.
- 로이터 뉴스: 주요 데이터 포인트를 모두 포함하는 데이터셋으로, 수십만 건의 기록을 보유하고 있습니다.
저널리스트를 위한 모든 데이터셋 살펴보기
스크레이퍼 API를 사용해 보거나 데이터 세트를 살펴보려면 지금 바로 무료 Bright Data 계정을 생성하세요.