python 크롤링?

2025. 10. 1. 14:22·2025/[풀스택]SeSAC 웹개발자 7기
반응형

0. 왜 파이썬을 쓰나요?

  • Crawler(Python) → 카페 데이터를 실제로 인터넷에서 모아오기

👉 Python은 웹에서 데이터를 긁어오는 라이브러리(requests, BeautifulSoup, Selenium 등)가 많고, 사용하기 쉽습니다. 그래서 크롤링에 업계에서 가장 많이 씁니다.


1. 가상환경(Virtual Environment) 이란?

  • 비유: 자바는 보통 Gradle/Maven 프로젝트마다 라이브러리(Jav)버전 관리하죠?
  • 파이썬도 마찬가지로 프로젝트별로 필요한 라이브러리 버전이 달라요.
  • 그래서 각 프로젝트마다 독립된 "작은 파이썬 세상"을 만드는 게 가상환경입니다.

👉 장점
(1) 다른 프로젝트끼리 라이브러리 충돌 안 함
(2) 팀원끼리 동일한 환경을 공유할 수 있음 (requirements.txt)


2. VSCode에서 가상환경 만들기

(1) VSCode 열고, crawler 레포를 오픈합니다.

(2) VSCode에서 터미널 열기 (Ctrl + backtick 혹은 Terminal → New Terminal)

(3) 명령어 입력 (Windows 기준, Git Bash에서도 동일)

python --version
  • 파이썬이 설치돼 있는지 확인합니다.
  • 출력 예시: Python 3.11.9 이런 식이면 OK.

(4) 가상환경 생성

python -m venv .venv
  • -m venv = 파이썬이 제공하는 “가상환경 만들기 도구” 실행
  • .venv = 이 폴더 안에 가상환경(= 작은 파이썬 세상)을 만든다는 뜻

👉 실행 후 프로젝트 폴더에 .venv라는 폴더가 생깁니다. 이 안에는 이 프로젝트 전용 파이썬 실행파일과 라이브러리 공간이 있어요.

(5) 가상환경 활성화

# Git Bash / Linux / Mac
source .venv/Scripts/activate
  • activate 스크립트를 실행하면, 터미널 프롬프트에 (.venv) 라고 표시가 붙습니다.
  • 이제 설치되는 모든 라이브러리는 이 .venv 안에만 들어가요.

(6) 가상환경 끄기 (필요할 때만)

deactivate

3. 라이브러리 설치 준비

크롤링에는 몇 가지 필수 라이브러리가 있습니다.

  1. requests → 웹 요청 보내기
  2. python-dotenv → .env 파일에서 비밀키 불러오기
  3. pydantic → API 응답을 깔끔하게 데이터 모델로 변환
  4. tqdm → 진행바
  5. loguru → 로깅(로그 보기 편하게)

👉 이걸 한 번에 관리하려고 requirements.txt를 만듭니다.

requirements.txt 파일 (프로젝트 루트에 생성)

requests python-dotenv pydantic>=2 tqdm loguru

설치 명령어

pip install -r requirements.txt
  • pip = 파이썬 패키지 설치 도구
  • -r requirements.txt = 파일에 적힌 라이브러리를 한 번에 설치

4. .env 파일이 뭐지?

  • .env = 환경변수 파일, 즉 비밀정보(API Key, DB 주소)를 보관하는 곳
  • 깃허브에 올리면 안 되므로 .gitignore에 등록해둡니다.

예시 (.env.example → 팀원 공유용)

KAKAO_REST_API_KEY=PUT_YOUR_KEY_HERE

실제 실행할 땐 .env라는 이름으로 복사해서, PUT_YOUR_KEY_HERE 자리에 카카오 API 키를 넣습니다.


5. Python 코드 뼈대 (line by line 설명)

src/crawler/main.py

# 1. 필요한 라이브러리 불러오기
import os                # 운영체제 관련 기능 (환경변수 불러오기 등)
import requests          # 웹 요청 라이브러리
from dotenv import load_dotenv  # .env 파일을 읽어주는 라이브러리

# 2. .env 파일에서 환경변수 로드
load_dotenv()  # 실행하면 현재 폴더의 .env 내용을 불러옴

# 3. 카카오 API 키 불러오기
KAKAO_KEY = os.getenv("KAKAO_REST_API_KEY")
if not KAKAO_KEY:
    raise SystemExit("❌ KAKAO_REST_API_KEY 가 .env에 없습니다.")

# 4. API 요청 준비
url = "https://dapi.kakao.com/v2/local/search/keyword.json"
headers = {"Authorization": f"KakaoAK {KAKAO_KEY}"}

# 5. 테스트: '강남역 카페' 검색하기
params = {"query": "강남역 카페"}
response = requests.get(url, headers=headers, params=params)

# 6. 응답 확인
if response.status_code == 200:
    data = response.json()
    print("✅ 카페 검색 성공!")
    for doc in data["documents"]:
        print(doc["place_name"], doc["road_address_name"], doc["phone"])
else:
    print("❌ 요청 실패:", response.status_code, response.text)

6. 실행 방법

터미널에서:

export PYTHONPATH=./src # src 폴더를 패키지 경로로 지정 python -m crawler.main

결과:

✅ 카페 검색 성공!
스타벅스 강남역점 서울 강남구 테헤란로 123 02-123-4567
투썸플레이스 강남점 서울 강남구 역삼동 ... 02-987-6543
...

여기까지 정리

  1. 가상환경 = 자바의 Gradle처럼, 프로젝트별 독립된 패키지 공간
  2. requirements.txt = 설치할 라이브러리 목록
  3. .env = 비밀 API 키 보관
  4. main.py = 카카오 API를 호출해서 카페 데이터를 불러오는 최소 코드
저작자표시 비영리 변경금지 (새창열림)

'2025 > [풀스택]SeSAC 웹개발자 7기' 카테고리의 다른 글

서울시 25개 전체 구 카페정보를 최대한 많이 수집하는 전략?  (0) 2025.10.01
API 기반 크롤링?  (0) 2025.10.01
관리자만 접근 가능한 인가 설정하기  (0) 2025.09.26
[b1a4 팀프로젝트 TIL] 250922월(day2) 배느실  (0) 2025.09.22
[BookTalk 팀프로젝트 회고모음] 험난했던 1달반의 여정을 마치며... KPT, TIL, CSS, ARR 회고 모음  (0) 2025.09.10
'2025/[풀스택]SeSAC 웹개발자 7기' 카테고리의 다른 글
  • 서울시 25개 전체 구 카페정보를 최대한 많이 수집하는 전략?
  • API 기반 크롤링?
  • 관리자만 접근 가능한 인가 설정하기
  • [b1a4 팀프로젝트 TIL] 250922월(day2) 배느실
d0yclub
d0yclub
2024.06.17 open
  • d0yclub
    개발꿈나무 김도이
    d0yclub
  • 전체
    오늘
    어제
    • 분류 전체보기 (77)
      • 서재 (0)
      • 2024 (13)
        • [FE]Next.js2기 (6)
        • [FE]우아한테크코스7기-프리코스 (6)
      • 개발공부 (25)
        • HTML CSS (6)
        • JavaScript (2)
        • React.js (4)
        • DB - mySQL (0)
        • error.log (8)
      • 2025 (32)
        • 멋쟁이사자처럼 프론트엔드스쿨플러스 4기 (1)
        • [풀스택]SeSAC 웹개발자 7기 (29)
        • 개인프로젝트 (1)
        • 팀프로젝트 (1)
      • 자료구조&알고리즘 풀이 (3)
        • 프로그래머스 (2)
      • 2026 (0)
        • [AI]SeSAC microsoft AI엔지니어 .. (0)
        • 개인프로젝트 (0)
        • 팀프로젝트 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    KPT회고
    KPT
    트러블슈팅
    프로젝트캠프
    RDS
    Next.js
    GCP
    DTO
    스나이퍼팩토리
    팀프로젝트
    웅진씽크빅
    TIL
    udemy
    미래내일일경험
    배느실
    EC2
    회고
    부트캠프
    유데미
    프론트엔드개발자양성과정
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
d0yclub
python 크롤링?
상단으로

티스토리툴바