조사한 내용을 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 강의를 등록해 주세요!