[1일 1파] 뉴스 기사 제목 크롤링 (Python 웹 스크래핑)

📌 ChatGPT와 뉴스 기사 제목 크롤링 하기(Python 웹 스크래핑)

etc-image-0
파이썬 웹 크롤링


🗂 목차


1. 📰 웹 크롤링이란?

웹 크롤링(Web Crawling)은 특정 웹사이트의 정보를 자동으로 가져오는 기술입니다.

뉴스 기사를 직접 검색하지 않고, Python을 사용해 최신 뉴스를 자동으로 가져올 수 있어요!

🔹 실생활에서 활용 예시

  • ✅ 특정 키워드가 포함된 뉴스 자동 수집
  • ✅ 관심 있는 뉴스 제목만 모아서 한눈에 확인
  • ✅ 뉴스 데이터를 엑셀 파일로 저장

2. ⚙️ 개발 환경 설정

Python과 필요한 라이브러리를 설치해야 해요.

 

📌 필요한 라이브러리 설치

pip install requests beautifulsoup4

 

→ 전에 한 번 설치 한적있으시죠? 날씨 불러오기와 같아요 ~

 

3. 🛠 Step-by-Step 코딩

1️⃣ 라이브러리 불러오기

import requests
from bs4 import BeautifulSoup

 

→ 날씨 불러오기를 따라하셨던 분들은 익숙하실거에요.

 

2️⃣ 뉴스 웹사이트에서 데이터 가져오기

url = "https://news.naver.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

 

→ 위 코드를 실행하면 아무런 결과가 표시되지 않아요. 그래서 아래처럼 한 줄 넣어봅니다.

etc-image-1
웨사이트 데이터 가져오기

 

→ 그리고 실행을 꾸욱~ 누르면 아래처럼 뭐가 막 출력되는걸 확인할 수 있어요.

etc-image-2
웹사이트 기사 불러오기

 

3️⃣ 뉴스 제목 크롤링

titles = soup.find_all("a", class_="news_tit")  # 기사 제목 태그 선택
for title in titles:
    print(title.text)

 

→ 제목을 잘 찾아올까요? 코드 입력하면서 출력결과를 상상해요.

etc-image-3
제목을 출력해줘

 

→ 결과는요? 안나오네요...

전에 날씨 불러오기와 같이 정확한 class명을 몰라서 그럴거라 추측해보고 코드를 확인해봐요.

 

[전체코드 수정]

→ class 중복도 많고 복잡해서 url 주소를 변경하고 chatGPT에게 html구조를 파악시키고 코드를 수정했어요. 😥

 

아래 전체 코드는 테스트 후 수정완료했습니다. 위에 코드에서 변경이 있어요!

 

4. 📜 전체 코드

import requests
from bs4 import BeautifulSoup

# 네이버 뉴스 URL
url = "https://news.naver.com/main/ranking/popularDay.naver"
headers = {"User-Agent": "Mozilla/5.0"}

# 페이지 요청
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")

# 최신 뉴스 제목 태그 확인
titles = soup.select("div.rankingnews_box a")  # 새로운 클래스 선택

# 결과 출력
for title in titles[:10]:  # 상위 10개 뉴스만 출력
    print(title.text.strip())

 

→ 실행결과에요~ 복잡해 보이는 코드를 보는건 아직 익숙치 않지만 재밌네요. 😉

etc-image-4
네이버 기사에서 크롤링해서 가져온 내용

5. 🚀 실행 방법 & 결과

  1. Python 파일을 실행하면 뉴스 기사 제목이 출력됩니다.
  2. 출력된 제목을 활용해 원하는 뉴스를 빠르게 찾을 수 있어요.

6. ❓ 초보자 FAQ

Q1. 크롤링이 안 돼요!

웹사이트 구조가 바뀌었을 가능성이 있어요. find_all()의 태그를 다시 확인해보세요.

Q2. 특정 키워드가 포함된 뉴스만 보고 싶어요!

if "파이썬" in title.text: 같은 조건을 추가하면 원하는 뉴스만 출력할 수 있어요.

Q3. 뉴스 제목을 파일로 저장할 수 있나요?

with open("news.txt", "w", encoding="utf-8")을 사용하면 텍스트 파일로 저장할 수 있어요.

🎯 맺음말 & 발전 과제

오늘은 뉴스 기사 제목을 자동으로 크롤링하는 프로그램을 만들었어요!

역시나 날씨 불러오기와 같이 홈페이지 구조를 알아야 원하는 기사를 가져올 수 있네요.

 

💡 발전 과제

  • ⚠ 뉴스 제목을 CSV 파일로 저장
  • ⚠ 특정 키워드가 포함된 뉴스만 필터링
  • ⚠ 여러 뉴스 사이트에서 제목 크롤링

📌 이전 글 & 다음 글