추출한 기사 데이터를 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 파일로 다운로드하기 위해서는 실행
버튼 옆의 실습 환경의 다운로드
버튼을 이용해주세요 :)
가이드라인
AI 튜터
배포
디자인
업로드
수업 노트
즐겨찾기
도움말
코드 에디터
실행 결과