본문 바로가기

카테고리 없음

pymysql로 크롤링 데이터 실시간 저장하는 방법

반응형

pymysql로 크롤링 데이터 실시간 저장하는 방법

 

웹 크롤링은 원하는 정보를 자동으로 수집하는 데 매우 유용한 기술입니다. 여기에 파이썬의 pymysql 라이브러리를 결합하면, 수집한 데이터를 실시간으로 MySQL 데이터베이스에 저장할 수 있어 자동화된 데이터 관리 시스템을 구축할 수 있습니다.

이 글에서는 requestsBeautifulSoup으로 웹 데이터를 수집하고, pymysql로 해당 데이터를 MySQL 테이블에 저장하는 실전 예제를 소개합니다.

사용 기술 소개

  • requests: 웹 페이지 요청을 보내 HTML 데이터를 가져옴
  • BeautifulSoup: HTML 파싱을 통해 원하는 데이터를 추출
  • pymysql: 파이썬에서 MySQL 데이터베이스 연동 및 쿼리 실행

라이브러리 설치

pip install pymysql requests beautifulsoup4

예제 시나리오: IT 뉴스 제목 수집 및 저장

예제에서는 IT 관련 뉴스 웹사이트에서 제목을 크롤링하고, 그 결과를 MySQL 테이블에 실시간 저장하는 방식으로 구성합니다.

1. MySQL 테이블 생성

CREATE TABLE news (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255),
    source VARCHAR(100),
    crawled_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

2. 파이썬 코드로 데이터 크롤링 + 저장

import requests
from bs4 import BeautifulSoup
import pymysql
from datetime import datetime

# DB 연결 설정
conn = pymysql.connect(
    host='localhost',
    user='your_user',
    password='your_password',
    database='your_database',
    charset='utf8mb4'
)
cursor = conn.cursor()

# 크롤링 대상 URL
url = "https://news.hankyung.com/it"

# 크롤링 시작
res = requests.get(url)
soup = BeautifulSoup(res.text, 'html.parser')

# 뉴스 제목 추출
news_items = soup.select("a.tit")  # 선택자 수정 필요시 HTML 구조에 맞게 변경

for item in news_items:
    title = item.get_text(strip=True)
    if title:
        sql = "INSERT INTO news (title, source) VALUES (%s, %s)"
        cursor.execute(sql, (title, '한국경제IT'))

conn.commit()
cursor.close()
conn.close()

print("크롤링 및 DB 저장 완료")

포인트 설명

  • requests.get(): HTML 페이지 요청
  • BeautifulSoup: CSS 선택자로 제목 추출
  • pymysql: DB 연결 후 INSERT 쿼리 실행
  • conn.commit(): 데이터베이스에 실제 반영

에러 방지를 위한 체크리스트

  • MySQL 연결 시 포트, 계정 정보 정확히 입력
  • 한글 저장 시 utf8mb4 설정 필수
  • 중복 저장 방지를 위해 UNIQUE 제약 조건이나 중복 검사 로직 추가 가능

실무 확장 아이디어

  • 크롤링 주기를 정해 자동 실행 (예: 1시간마다 실행)
  • 크롤링 결과를 API로 제공하거나 웹 앱에 연동
  • 기사 본문, 작성일자 등 추가 필드 저장
  • 데이터 수집 내역을 엑셀로 자동 백업

정리하며

pymysql을 활용하면 크롤링 데이터를 실시간으로 MySQL에 저장할 수 있어, 반복적인 수작업을 줄이고 데이터를 체계적으로 관리할 수 있습니다. 웹 크롤링과 데이터베이스 연동은 데이터 자동화 시스템의 핵심이며, 업무 자동화나 개인 프로젝트에도 큰 도움이 됩니다.

실제 프로젝트에 맞게 테이블 구조를 확장하고, 저장 조건을 추가하면 더욱 안정적인 시스템으로 발전시킬 수 있습니다. 이 글을 참고해 실전 자동화 시스템을 구성해보세요.

반응형