반응형
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. 라이브러리 설치 준비
크롤링에는 몇 가지 필수 라이브러리가 있습니다.
- requests → 웹 요청 보내기
- python-dotenv → .env 파일에서 비밀키 불러오기
- pydantic → API 응답을 깔끔하게 데이터 모델로 변환
- tqdm → 진행바
- 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
...
여기까지 정리
- 가상환경 = 자바의 Gradle처럼, 프로젝트별 독립된 패키지 공간
- requirements.txt = 설치할 라이브러리 목록
- .env = 비밀 API 키 보관
- 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 |