추출한 기사 데이터를 CSV 파일로 저장하기
이번 수업에서는 추출한 BBC 뉴스 기사 제목을 CSV 파일
로 저장하는 방법을 알아보겠습니다.
CSV(Comma Separated Values)는 쉼표로 구분된 데이터를 의미합니다.
CSV 파일은 엑셀, 구글시트와 같은 스프레드시트 프로그램에서 쉽게 열람할 수 있으며, 데이터를 저장하고 불러올 때 자주 활용됩니다.
BBC 웹사이트에서 기사 제목을 추출하는 코드
파이썬에서 기본적으로 제공하는 csv
모듈을 사용하면 데이터를 간편하게 CSV 형식으로 처리 및 저장할 수 있습니다.
import csv
from io import StringIO
from bs4 import BeautifulSoup
import requests
# BBC 뉴스 홈페이지에 요청 보내기
url = "https://www.bbc.com/news"
response = requests.get(url)
# HTML 데이터 파싱
soup = BeautifulSoup(response.text, "html.parser")
# h2 HTML 태그로 기사 제목 10개 추출
titles = soup.find_all('h2', limit=10)
# CSV 파일로 저장할 데이터 구성
data = []
for title in titles:
# 기사 제목만 추출
data.append([title.text])
위 코드는 h2
HTML 태그를 가진 BBC 뉴스 기사 제목을 추출하고, CSV 형태로 출력하는 코드입니다.
h2(Heading2) 태그는 웹 페이지에서 제목을 나타내는 태그로, 인터넷 뉴스 기사 제목은 주로 h1(대제목), h2(중제목), h3(소제목) 태그로 작성됩니다.
soup.find_all('h2', limit=10)
코드는 HTML 데이터에서 h2 태그로 작성된 기사 제목을 최대 10개까지 추출합니다.
CSV 파일로 저장하기
# StringIO 객체(메모리에 파일처럼 데이터를 임시 저장) 생성
output = StringIO()
# CSV 파일로 StringIO 객체 저장
csv_writer = csv.writer(output)
# CSV에 헤더 추가
csv_writer.writerow(['번호', '기사 제목'])
# CSV에 번호와 기사 제목 추가
for idx, title in enumerate(titles, 1):
csv_writer.writerow([idx, title.text.strip()])
# CSV 형식의 결과 출력
print(output.getvalue())
# StringIO 객체 닫기
output.close()
StringIO
객체는 메모리에 데이터를 임시 저장할 수 있는 객체입니다.
csv.writer
로 CSV 파일을 작성하고, csv_writer.writerow()
로 헤더와 데이터를 추가합니다.
마지막으로 output.getvalue()
로 CSV 형식의 결과를 출력합니다.
이제 위 코드를 실행하면, 추출한 BBC 뉴스 기사 제목이 CSV 형식으로 출력됩니다.
참고로 CSV 형식으로 표시된 데이터를 출력하는 것이 아닌 저장하려면, 아래 코드를 추가하면 됩니다.
# CSV 파일로 StringIO 객체 저장
with open('bbc_news.csv', 'w', newline='') as f:
f.write(output.getvalue())
위 코드는 컴퓨터에 파이썬 실행 파일이 실 행되는 위치에 bbc_news.csv
파일을 생성하고, 데이터를 저장합니다.
실습 환경에서는 보안 문제로 인해 파일 저장이 제한됩니다.
CSV 파일로 다운로드하기 위해서는 실행
버튼 옆의 실습 환경의 다운로드
버튼을 이용해주세요 :)
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!