본문으로 건너뛰기
실습하기

조사한 내용을 CSV 형식으로 저장하기

웹 크롤링으로 수집한 자료를 CSV 파일로 저장하면 수집한 데이터를 엑셀 파일 및 텍스트 에디터에서 쉽게 확인할 수 있습니다.

이번 수업에서는 BeautifulSoup으로 수집한 자료를 CSV 파일로 저장하는 방법을 알아보겠습니다.


CSV 파일 저장 코드

코드 예시
# StringIO 객체 생성, 메모리에서 파일처럼 작동하는 객체 (문자열을 처리할 수 있음)
output = io.StringIO()

# CSV 파일에 쓰려는 필드 이름을 리스트로 선언
fieldnames = ['회사명', '창업자', '설립연도']

# CSV 쓰기 객체 생성, 필드 이름을 지정하여 Dictionary 형태로 데이터를 작성할 수 있게 함
writer = csv.DictWriter(output, fieldnames=fieldnames)

# CSV 파일의 첫 줄에 필드 이름을 작성 (헤더 생성)
writer.writeheader()

# 회사 정보가 담긴 여러 행의 데이터를 CSV 형식으로 작성 (company_info는 딕셔너리들의 리스트)
writer.writerows(company_info)

# CSV 형태의 결과를 출력
print(output.getvalue())

코드 설명

1. output = io.StringIO()

  • io.StringIO()는 파이썬의 io 모듈에서 제공하는 클래스로, 메모리 내에서 파일과 유사하게 동작하는 객체를 생성합니다.

  • 보통 CSV 파일을 생성할 때는 파일 시스템에 저장하지만, 코드 예시는 파일을 사용하지 않고 메모리 내에서 문자열을 다루기 위해 StringIO()를 사용했습니다.

  • 여기서 output 변수는 일종의 "메모리 버퍼"(메모리 공간)로, 작성할 CSV 데이터가 일시적으로 저장되는 공간이 됩니다.


2. writer = csv.DictWriter(output, fieldnames=fieldnames)

  • csv.DictWriter()는 파이썬 csv 모듈에서 제공하는 클래스로, 딕셔너리 형태의 데이터를 CSV 파일로 쓸 수 있도록 돕습니다.

  • csv.DictWriter(output, fieldnames=fieldnames)output이라는 StringIO 객체를 CSV 작성 객체로 변환합니다.

  • fieldnames는 CSV 파일의 첫 줄에 쓰여질 필드 이름을 지정하는 리스트입니다.


3. writer.writeheader()

  • writer.writeheader()는 CSV 파일의 첫 줄에 필드 이름을 작성하는 함수입니다.

  • 이 함수를 호출하면 fieldnames에 지정된 필드 이름이 CSV 파일의 첫 줄로 작성됩니다.


4. writer.writerows(company_info)

  • writer.writerows()는 여러 행의 데이터를 CSV 파일로 작성하는 함수입니다.

  • company_info는 딕셔너리들의 리스트로, 각 딕셔너리는 CSV 파일의 한 행을 나타냅니다.

  • writer.writerows(company_info)를 호출하면 company_info에 저장된 데이터가 CSV 파일로 작성됩니다.


5. print(output.getvalue())

  • output.getvalue()StringIO 객체에 저장된 데이터를 문자열로 반환하는 함수입니다.

  • print(output.getvalue())를 호출하면 CSV 형태의 결과를 출력할 수 있습니다.


지금까지 웹 크롤링을 통해 수집한 데이터를 CSV 형식으로 저장하는 방법을 알아보았습니다.

웹 크롤링을 잘 활용하면 복잡하고 반복적인 자료 조사 작업을 효율적으로 처리할 수 있습니다.

다음 Chapter에서는 이메일 자동화를 실무에 활용하는 방법을 알아보겠습니다.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!