📁 [파일명].py 템플릿 - 주석 ver.
import mysql.connector # MySQL/MariaDB와 연결하기 위한 라이브러리
import pandas as pd # 데이터프레임 처리를 위한 pandas 라이브러리
# 1. MariaDB 연결 설정
# 데이터베이스 접속을 위한 설정 정보를 딕셔너리 형태로 저장
db_config = {
"host": "localhost", # MariaDB 서버 주소
"user": "root", # 사용자 이름
"password": "password", # 비밀번호
"database": "test_db" # 사용할 데이터베이스
}
# MariaDB 연결
conn = mysql.connector.connect(**db_config) # 설정 정보를 이용해 MariaDB에 연결
cursor = conn.cursor() # SQL 실행을 위한 커서 생성
# 2. 테이블 생성 (이미 존재하면 삭제 후 생성)
cursor.execute("DROP TABLE IF EXISTS employees;") # 기존 테이블이 존재하면 삭제
cursor.execute("""
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY, # 자동 증가하는 기본 키
name VARCHAR(50), # 이름 (최대 50자)
age INT, # 나이 (정수형)
department VARCHAR(50), # 부서명 (최대 50자)
salary DECIMAL(10,2) # 급여 (소수점 2자리까지 허용)
);
""") # 새로운 employees 테이블 생성
# 3. 샘플 데이터 생성 (pandas DataFrame 활용)
# 직원 정보를 저장하는 딕셔너리를 생성한 후 pandas의 DataFrame으로 변환
data = {
"name": ["Alice", "Bob", "Charlie", "David", "Eve"],
"age": [25, 30, 35, 28, 40],
"department": ["HR", "IT", "Finance", "Marketing", "IT"],
"salary": [50000, 70000, 80000, 60000, 90000]
}
df = pd.DataFrame(data) # pandas 데이터프레임 생성
# 4. 데이터 삽입
# employees 테이블에 데이터를 삽입하기 위한 SQL 쿼리 작성
insert_query = "INSERT INTO employees (name, age, department, salary) VALUES (%s, %s, %s, %s)"
# 데이터프레임을 튜플 리스트 형태로 변환하여 executemany에 전달
values = [tuple(row) for row in df.to_numpy()]
cursor.executemany(insert_query, values) # 여러 개의 데이터 한 번에 삽입
conn.commit() # 변경사항을 데이터베이스에 반영
print("데이터 삽입 완료") # 데이터 삽입 완료 메시지 출력
# 5. 데이터 조회 및 pandas DataFrame으로 변환
cursor.execute("SELECT * FROM employees") # employees 테이블의 모든 데이터 조회
rows = cursor.fetchall() # 조회한 결과를 리스트 형태로 저장
# 컬럼명 가져오기
column_names = [desc[0] for desc in cursor.description] # 커서에서 컬럼명을 추출
# 조회한 데이터를 pandas 데이터프레임으로 변환
df_result = pd.DataFrame(rows, columns=column_names)
# 6. 결과 출력 (pandas 기본 출력 방식 사용)
print("\n=== Employees Table Data ===")
print(df_result.to_string(index=False)) # 인덱스 없이 데이터 출력
# CSV로 저장 (필요한 경우)
df_result.to_csv("employees_data.csv", index=False, encoding="utf-8-sig") # 데이터를 CSV 파일로 저장
print("데이터를 'employees_data.csv' 파일로 저장하였습니다.")
# 연결 종료
cursor.close() # 커서 종료
conn.close() # 데이터베이스 연결 종료
Flask WebServer 동작 확인
1. Sublime Text에 복사-붙여넣기 + 저장(app.py)
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5001, debug=True)
2. FTP에서 업로드
3. 리눅스에 입력(python3 app.py)
4. 브라우저에 (http://ip주소:포트번호) 입력
5. 정상 출력 확인 가능
그로스 마케팅 주요 지표
- CTR (Click-Through Rate): clicks / impressions * 100 → 광고 클릭률 (%)
- CVR (Conversion Rate): conversions / clicks * 100 → 전환율 (%)
- ROAS (Return On Ad Spend): revenue / cost * 100 → 광고 투자 수익률 (%)
✅ 참고
impressions (INT) - 광고 노출 수
clicks (INT) - 광고 클릭 수
conversions (INT) - 구매 또는 회원가입 전환 수
cost (DECIMAL) - 총 광고 비용 (단위: 원)
revenue (DECIMAL) - 총 매출 (단위: 원)
그로스 마케팅에서 크롤링의 이유와 목적
크롤링은 데이터를 자동 수집해 마케팅 전략을 최적화하고 의사 결정을 개선하는 데 활용된다.
1. 경쟁사 및 시장 분석
- 경쟁사의 가격, 프로모션, 마케팅 전략을 추적해 경쟁 우위 확보
2. 소비자 행동 분석
- 리뷰·SNS 데이터를 분석해 제품 개선 및 맞춤 마케팅 기획
3. 광고·SEO 최적화
- 검색 트렌드·인기 키워드 수집으로 광고 성과 극대화
4. 리드(잠재 고객) 발굴
- B2B 기업 데이터·SNS 관심 그룹 분석해 맞춤 마케팅 진행
5. 가격 비교·조정
- 경쟁사 가격을 분석해 다이내믹 프라이싱 전략 적용
6. 콘텐츠 마케팅 강화
- 인기 콘텐츠 분석으로 효과적인 블로그·SNS 콘텐츠 제작
7. 수요 예측·재고 관리
- 판매 데이터 분석을 통해 재고 최적화 및 마케팅 기획
8. SNS 및 커뮤니티 모니터링
- 브랜드 언급·소비자 반응 분석으로 소셜 리스닝 수행
스타트업을 위한 그로스 마케팅 크롤링 전략
1. 목표 설정: 크롤링의 목적 정의
크롤링을 시작하기 전에 마케팅 목표를 명확히 정의해야 한다.
경쟁사 분석 | 경쟁사의 가격, 마케팅 전략, 신제품 동향 분석 |
소비자 트렌드 파악 | 소셜 미디어, 리뷰 데이터 분석을 통한 고객 니즈 탐색 |
광고 및 키워드 최적화 | 검색 트렌드 및 인기 키워드를 분석하여 광고 캠페인 효율 극대화 |
리드(잠재 고객) 수집 | 특정 관심사를 가진 고객 정보를 수집하여 B2B, B2C 마케팅 활용 |
2. 데이터 소스 선정: 어디에서 데이터를 크롤링할 것인가?
① 경쟁사 및 업계 트렌드 분석
- 경쟁사의 웹사이트, 이커머스 플랫폼 (예: 쿠팡, 네이버 쇼핑, 아마존)
- 가격 비교 사이트 (예: 다나와, 가격비교 사이트)
- 뉴스 및 미디어 (예: 네이버 뉴스, 구글 뉴스)
② 고객 반응 및 소비자 데이터 수집
- 상품 리뷰 및 평점 (예: 네이버 리뷰, 아마존 리뷰, 트위터, 인스타그램)
- SNS 트렌드 및 해시태그 분석 (예: 트위터, 인스타그램, 유튜브, 레딧)
- 커뮤니티 (예: 클리앙, 뽐뿌, 디시인사이드, 네이버 카페)
③ 검색 및 광고 최적화
- 검색 키워드 및 트렌드 (예: 네이버 트렌드, 구글 트렌드)
- 경쟁사의 광고 캠페인 (예: 페이스북 광고 라이브러리, 구글 애즈)
3. 크롤링 기술 스택 선정
기능 | 도구 |
크롤링 | BeautifulSoup, Scrapy, Selenium |
API 데이터 수집 | Requests, Google Trends API, Twitter API, Facebook API |
데이터 저장 및 분석 | Pandas, MongoDB, MySQL, PostgreSQL |
데이터 시각화 | Matplotlib, Tableau, Google Data Studio |
머신러닝 분석 | scikit-learn, TensorFlow, Keras |
4. 크롤링 실행 및 데이터 수집
① 크롤링 전략 설정
- 정적 페이지 → BeautifulSoup 활용 (HTML 데이터 분석)
- 동적 페이지 → Selenium 사용 (JavaScript 렌더링 처리)
- API 지원 → Requests 또는 공식 API 활용
② 크롤링 스케줄링
- 데이터를 한 번 크롤링하는 것이 아니라 정기적으로 업데이트 필요
- Airflow, Cron Job 등을 활용하여 자동화
③ 데이터 필터링 및 정제
- 중복 데이터 제거 및 정규화
- 자연어처리(NLP)를 활용한 키워드 추출 및 감성 분석 (예: NLTK, KoBERT)
5. 데이터 분석 및 활용
① 경쟁사 가격 및 제품 전략 분석
- 가격 변화 감지 → 동적 가격 조정(Dynamic Pricing)
- 제품 리뷰 분석 → 소비자 피드백 반영
② 검색 및 광고 최적화
- 검색 키워드 크롤링 → SEO & PPC 전략 개선
- 광고 카피 & 이미지 비교 → CTR(클릭률) 높은 광고 요소 분석
③ 고객 맞춤형 마케팅
- 소셜미디어 크롤링 → 바이럴 마케팅 기회 탐색
- 소비자 리뷰 감성 분석 → 맞춤형 프로모션 기획
6. 크롤링 법적 이슈 및 윤리적 고려
스타트업이 크롤링을 활용할 때, 법적 문제를 피하기 위한 가이드라인을 따라야 한다.
- 웹사이트 이용 약관 준수: Robots.txt 파일 확인 (https://example.com/robots.txt)
- API 활용 우선: 공식 API가 제공되는 경우 API 사용 권장
- 개인정보 보호 준수: 고객 데이터 수집 시 GDPR, 개인정보 보호법 준수
- 과부하 방지: 크롤링 시 서버에 부담을 주지 않도록 요청 간격 조절 (time.sleep())
회고
6일차에 처음 SQL 할 때는 너무 어려워서 괜찮을까..했는데 또 한 주가 끝나니 많이 성장한 나를 확인할 수 있었다! 위클리 테스트도 빠르게 풀어낸 것 같고,,,,(물론 정답이라는 건 아니다) 생각보다 낑낑대며 따라간 보람이 컸다ㅎㅎ 다음주도 파이팅!