[파이썬] 웹 스크래핑과 데이터 저장 방식

웹 스크래핑은 인터넷 상의 웹 사이트에서 데이터를 추출하는 것을 의미합니다. 파이썬은 웹 스크래핑에 매우 유용한 기능과 라이브러리를 제공하고 있으며, 데이터를 저장하는 다양한 방식도 있습니다.

웹 스크래핑을 위한 라이브러리

파이썬에서 웹 스크래핑을 위해 많이 사용되는 라이브러리는 BeautifulSoupRequests 입니다.

다음은 파이썬을 사용하여 웹 스크래핑을 하는 간단한 예제 코드입니다. Beautiful Soup과 Requests 라이브러리를 사용하여 네이버 홈페이지의 실시간 검색어를 가져오는 예제입니다.

import requests
from bs4 import BeautifulSoup

url = "https://www.naver.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

# 실시간 검색어 추출
keywords = soup.select(".PM_CL_realtimeKeyword_rolling > .ah_item > .ah_k")

# 결과 출력
for keyword in keywords:
    print(keyword.text)

데이터 저장 방식

웹 스크래핑한 데이터를 저장하기 위해 다양한 방식을 사용할 수 있습니다. 대표적인 데이터 저장 방식으로는 텍스트 파일, CSV 파일, 데이터베이스가 있습니다.

텍스트 파일

텍스트 파일은 가장 간단한 형태의 데이터 저장 방식입니다. 파이썬에서는 내장된 open() 함수를 사용하여 텍스트 파일을 생성하고 데이터를 쓰고 읽을 수 있습니다.

# 텍스트 파일에 데이터 쓰기
with open("data.txt", "w") as file:
    file.write("Hello, World!")

# 텍스트 파일에서 데이터 읽기
with open("data.txt", "r") as file:
    data = file.read()

print(data)  # 출력: "Hello, World!"

CSV 파일

CSV(Comma Separated Values) 파일은 데이터를 쉼표(,)로 구분하여 저장하는 형식입니다. 파이썬에서는 내장된 csv 모듈을 사용하여 CSV 파일을 생성하고 데이터를 작성할 수 있습니다.

import csv

# CSV 파일에 데이터 작성
data = [("Apple", 1.5), ("Banana", 0.5), ("Orange", 0.8)]

with open("data.csv", "w", newline="") as file:
    writer = csv.writer(file)
    writer.writerow(["Fruit", "Price"])
    for row in data:
        writer.writerow(row)

# CSV 파일에서 데이터 읽기
with open("data.csv", "r") as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

# [['Fruit', 'Price'], ['Apple', '1.5'], ['Banana', '0.5'], ['Orange', '0.8']]

데이터베이스

데이터베이스는 구조화된 데이터를 저장하고 관리하는 데 사용되는 시스템입니다. 파이썬에서는 다양한 데이터베이스 관리 시스템에 접속하고 데이터를 저장하기 위해 sqlite3 모듈을 제공합니다.

import sqlite3

# 데이터베이스 연결 및 테이블 생성
conn = sqlite3.connect("data.db")
cursor = conn.cursor()

cursor.execute('''CREATE TABLE fruits
                  (name TEXT, price REAL)''')

# 데이터 삽입
data = [("Apple", 1.5), ("Banana", 0.5), ("Orange", 0.8)]

for row in data:
    cursor.execute("INSERT INTO fruits VALUES (?, ?)", row)

conn.commit()

# 데이터 조회
cursor.execute("SELECT * FROM fruits")
rows = cursor.fetchall()

for row in rows:
    print(row)

# [('Apple', 1.5), ('Banana', 0.5), ('Orange', 0.8)]

# 연결 종료
conn.close()

이는 웹 스크래핑과 데이터 저장 방식에 대한 간단한 소개였습니다. 파이썬을 사용하여 웹 스크래핑과 데이터 저장을 다루는 것은 데이터 수집과 분석에 있어 매우 중요하며 유용한 기능입니다.