가이드라인

BBC 뉴스 기사 제목 추출하기

매일 아침 전 세계 최신 뉴스를 자동으로 수집하고, 내 이메일로 자동으로 전송받는다면 얼마나 편할까요?

이러한 일을 가능하게 하는 것이 바로 웹 크롤링입니다.

이번 수업에서는 BBC 뉴스 홈페이지에서 최신 기사 제목을 추출하는 실전 프로젝트를 진행해 보겠습니다.


Requests와 BeautifulSoup 복습

웹 페이지에서 정적 데이터(JavaScript로 동적으로 생성되지 않는 데이터)를 가져오기 위해 requestsBeautifulSoup 라이브러리를 사용합니다.

requests는 웹 페이지에서 HTML 코드를 가져오는 라이브러리이며, BeautifulSoup는 HTML 코드를 분석해 필요한 정보를 추출합니다.


requests로 BBC 뉴스에 접속하기

웹 크롤링의 첫 번째 단계는 웹 서버에 데이터를 요청하는 것입니다.

아래 코드는 BBC 뉴스 홈페이지에 요청을 보내고, 응답을 확인하는 예시입니다.

BBC 뉴스 페이지 요청 코드
import requests # BBC 뉴스 홈페이지에 요청 보내기 url = "https://www.bbc.com/news" response = requests.get(url) # 요청 성공 여부 확인 print("status_code:", response.status_code)

response.status_code200이면 요청이 성공적으로 이루어진 것입니다.

이제 웹 페이지의 데이터를 받은 상태이며, 다음 단계에서는 이 데이터를 분석해 보겠습니다.


BeautifulSoup으로 HTML 데이터 분석하기

서버로부터 받은 HTML 데이터는 그 자체로는 무의미한 문자열입니다.

이 데이터를 의미 있게 분석하려면 BeautifulSoup을 사용해야 합니다.

BeautifulSoup은 HTML 구조를 분석하고, 특정 태그에 담긴 데이터를 손쉽게 추출할 수 있도록 돕습니다.

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 튜터

배포

디자인

업로드

수업 노트

즐겨찾기

도움말

코드 에디터

코드 실행
코드 생성

실행 결과