본문 바로가기

코딩과 AI와 자동화/크롤링

4편. 크롤링 결과를 구글 시트·노션에 “자동으로 쌓는” 방법

반응형

크롤링을 배웠다면, 이제 다음 단계는 “수집 → 정리 → 저장 → 활용” 입니다.
코드로 모은 데이터를 구글 시트(Google Sheets) 또는 노션 DB(Notion Database)에 자동으로 쌓아두면, 이후에 리포트/알림/GPT 요약까지 자연스럽게 확장할 수 있습니다.

 


오늘 글에서 만들 “최소 자동화”

  • Selenium/requests/BeautifulSoup 등으로 수집한 결과를
  • list/dict 형태로 정리한 다음
  • 구글 시트에 append(누적 저장) 또는 노션 DB에 row(페이지) 생성
  • 그리고 중복 방지 + 오류 재시도까지 기본 뼈대를 잡습니다.

 

본문 흐름에 자연스럽게 들어갈 키워드 ex) 파이썬 크롤링, Selenium 크롤링, 웹 스크래핑, 구글 시트 API, Notion API, 노션 데이터베이스, 자동화, gspread, requests, BeautifulSoup

 


1) 크롤링 결과, “이 형태”로 맞추면 연동이 쉬워집니다

크롤링 결과를 아래처럼 list 안에 dict로 통일해두면, 시트/노션 어디든 넣기 편합니다.

 

items = [
  {
    "source": "example_site",
    "title": "상품명/기사제목",
    "url": "https://...",
    "price": 19900,              # 없으면 None
    "collected_at": "2026-01-07 10:30"
  },
]

 

핵심 포인트 2개

  • 스키마(컬럼) 고정: 나중에 데이터가 커져도 안 흔들립니다.
  • 고유키(id) 만들기: 중복 방지의 시작입니다. (예: url 또는 hash(title+url))

 


2) 구글 시트에 자동으로 누적 저장하기

가장 정석은 Google Sheets API를 쓰는 방식입니다. 구글 공식 문서도 “Python Quickstart” 형태로 안내합니다. (Google for Developers)

 

Python 빠른 시작  |  Google Sheets  |  Google for Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 Python 빠른 시작 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Google Sheets API에 요청을 보

developers.google.com

 

준비

  1. Google Cloud에서 Google Sheets API 활성화
  2. OAuth/인증 설정 후 파이썬에서 호출
  3. “행 추가(append)”로 계속 누적

운영 단계(배포/서버)에서는 인증 방식(서비스 계정 vs OAuth)을 프로젝트 환경에 맞게 결정하는 게 중요합니다. (테스트는 OAuth가 편합니다.) (Google for Developers)

 

예시 코드

  • 목표: items를 한 줄씩 시트에 추가
  • 구현 방식은 2가지 중 하나를 선택하면 됩니다.
    • A안: google-api-python-client (정석/유연)
    • B안: gspread (쉽게 시작)

 

 


3) 노션 DB(Notion Database)에 자동으로 쌓기

노션은 “DB의 한 줄 = 페이지 1개” 개념입니다.
즉, 크롤링 결과 1건을 노션 페이지 생성(Create a page)으로 추가하면 됩니다. (developers.notion.com)

 

Create a page

Use this API to create a new page as a child of an existing page or data source .

developers.notion.com

 

 

준비

  1. Notion에서 Integration 생성 → 토큰 발급
  2. 노션 DB(데이터베이스)를 만든 뒤 해당 Integration을 연결(권한 부여)
    • “페이지/DB를 Integration과 공유해야 생성/추가 가능” 구조입니다. (developers.notion.com)
  3. API로 페이지 생성: POST /v1/pages (developers.notion.com)

 

예시 코드

  • database_id + properties로 row 생성
  • title/url/price/수집시간 같은 필드를 넣어둡니다.


4) 자동화에서 제일 중요한 것: 중복 방지 + 안정성

연동은 금방 되지만, “매일 돌려도 안전”하게 만드는 건 여기서 갈립니다.

 

(1) 중복 방지(필수)

  • 고유키 컬럼을 하나 두세요. (예: uid)
  • uid가 이미 있으면 “스킵”
    • 시트: uid 컬럼을 조회해서 비교
    • 노션: uid 프로퍼티로 검색/필터 후 존재하면 스킵

 

(2) 실패했을 때 재시도(필수)

  • 네트워크/일시 오류는 반드시 납니다.
  • 기본 규칙:
    • 3회 재시도
    • 1초 → 2초 → 4초(지수 백오프)
    • 실패 로그 남기기(나중에 원인 추적)


5) 현실적인 GPT 자동화로 연결하는 아이디어

시트/노션에 쌓인 데이터는 GPT로 요약/분류/보고서화하기 좋습니다.

 

연결 아이디어 3가지

  1. 요약 자동 생성
    • 노션 DB에 요약 컬럼을 만들고, 새 row가 들어오면 요약 채우기
  2. 태깅/분류 자동화
    • 예: “공지/이벤트/가격인하/품절” 같은 라벨을 자동 분류
  3. 리포트 자동 생성
    • 매일 아침 “전날 수집 요약”을 문서로 생성(노션 페이지 or 구글 문서)

 

주의: 회사/개인정보/민감정보가 섞일 수 있는 데이터는 그대로 GPT에 넣지 말고 익명화/필터링이 먼저입니다.

 


“어떤 키워드를 본문에 넣을지” 빠르게 뽑는 방법

요청하신 블랙키위는 웹에서 JS 기반이라, 이 환경에선 키워드 표를 직접 열람하기 어려웠습니다.

대신 실무에서는 Google Trends의 ‘관련 검색어’를 pytrends로 뽑아 “소제목/문장”에 자연스럽게 섞는 방식을 많이 씁니다.

(코알못의 코딩 정복)

 

pytrends: 파이썬에서 Google Trends를!

Google Trends란 뭘까? Google Trends is a website by Google that analyzes the popularity of top search queries in Google Search across various regions and languages. Google Trends는 다양한 지역과 언어에서 Google 검색의 인기 검색어의

miniolife.tistory.com


(예: “파이썬 크롤링 구글 시트 저장”, “노션 API 자동화”, “Selenium 크롤링 결과 정리”)

 


“수집”이 아니라 “적재”가 자동화의 시작입니다

오늘 만든 구조(크롤링 → 시트/노션 적재)는, 이후에 GPT를 붙이든 알림을 붙이든 그대로 확장됩니다.
중요한 건 화려한 기능이 아니라 스키마 고정 + 중복 방지 + 재시도 이 3가지입니다.

반응형