BBC 뉴스 기사 제목 추출하기
매일 아침 전 세계 최신 뉴스를 자동으로 수집하고, 내 이메일로 자동으로 전송받는다면 얼마나 편할까요?
이러한 일을 가능하게 하는 것이 바로 웹 크롤링입니다.
이번 수업에서는 BBC 뉴스 홈페이지에서 최신 기사 제목
을 추출하는 실전 프로젝트를 진행해 보겠습니다.
Requests와 BeautifulSoup 복습
웹 페이지에서 정적 데이터(JavaScript로 처리되지 않는 고정된 데이터)를 가져올 때는 주로 requests
와 BeautifulSoup
라이브러리를 사용합니다.
requests는 웹 페이지에서 HTML 코드를 가져오는 라이브러리이며, BeautifulSoup는 HTML 코드를 분석해 필요한 정보를 추출합니다.
requests로 BBC 뉴스에 접속하기
웹사이트에서 제목을 추출하려면 먼저 requests 라이브러리를 활용해 HTML 데이터를 가져와야 합니다.
아래는 BBC 뉴스 홈페이지에 요청을 보내고, 정상적으로 요청이 이루어졌는지 확인하는 코드입니다.
import requests # BBC 뉴스 홈페이지에 요청 보내기 url = "https://www.bbc.com/news" response = requests.get(url) # 요청 성공 여부 확인 print("status_code:", response.status_code)
response.status_code
가 200이면 요청이 성공적으로 이루어진 것입니다.
BeautifulSoup으로 HTML 데이터 분석하기
서버로부터 받은 HTML 데이터는 그 자체로는 무의미한 문자열입니다.
이 데이터를 의미 있게 분석하려면 BeautifulSoup을 사용해야 합니다.
BeautifulSoup은 HTML 구조를 분석하고, 특정 태그에 담긴 데이터를 손쉽게 추출할 수 있도록 돕습니다.
from bs4 import BeautifulSoup import requests # BBC 뉴스 홈페이지에 요청 보내기 url = "https://www.bbc.com/news" response = requests.get(url) # 요청 성공 여부 확인 print("status_code:", response.status_code) # HTML 데이터 파싱 soup = BeautifulSoup(response.text, "html.parser") # 페이지에서 h2 태그로 기사 제목 10개 추출 titles = soup.find_all('h2', limit=10) # 번호 및 기사 제목 출력 # enumerate() 함수로 인덱스 번호를 함께 가져옴 for idx, title in enumerate(titles): print(f"{idx+1}. {title.text}")
위 코드는 h2
태그에 담긴 텍스트를 모두 찾아 출력합니다.
BBC 뉴스 홈페이지에서 기사 제목은 주로 h2 태그로 작성되므로 find_all('h2')
로 기사 제목을 추출할 수 있습니다.
이번 수업에서는 Requests로 웹 페이지에 요청을 보내고, BeautifulSoup으로 HTML 데이터를 분석해 BBC 뉴스의 기사 제목을 추출하는 방법을 배웠습니다.
다음 수업에서는 이렇게 추출한 데이터를 CSV 파일로 저장하는 방법을 배우게 됩니다.
가이드라인
AI 튜터
배포
디자인
업로드
수업 노트
즐겨찾기
도움말
코드 에디터
실행 결과