Bootcamp

웹 크롤링(Crawling), API를 통한 마케팅 데이터 수집 및 분석

sayous 2025. 5. 26. 03:27

커리큘럼 누가 짠건진 몰라도 반성 조금만 하시길
 
 
웹 크롤링(Crawling)은 데이터를 자동으로 수집해 마케팅 전략을 최적화하고 의사 결정을 개선하는 데 중요한 역할을 한다.

  • 경쟁사 동향 실시간 추적, 업계 트렌드 분석
  • SNS, 블로그, 쇼핑몰 리뷰 크롤링으로 제품 선호도와 피드백 분석
  • 검색 트렌드, 소셜 인기 키워드 수집해 광고 최적화 및 SEO 전략 수립
  • 리드(잠재 고객) 발굴 ex. 기업 웹사이트 데이터 크롤링 (B2B)
  • 실시간 가격 비교, 최저가/평균가 분석으로 가격 최적화 (Dynamic Pricing)
  • 인기 콘텐츠 분석, 커뮤니티 모니터링 (브랜드 인지도, 소비자 반응, 바이럴 마케팅 효과 등)
  • 판매 데이터와 검색량을 크롤링해 제품 수요 예측도 가능! 효율적인 재고 관리까지

크롤링 기능에 따른 기술 스택 (툴):

크롤링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

 

주요 상용 크롤링 서비스

ScraperAPIIP 회피, CAPTCHA 우회, API 제공월 $29~사용이 간단하고 속도가 빠름
Bright Data (구 Luminati)고급 프록시, 대량 크롤링, 데이터 API 제공종량제전 세계 IP 제공, 기업용 크롤링 지원
Oxylabs웹 스크래핑 전용 API, 프록시 네트워크종량제높은 보안성, 안정적인 성능
SerpAPIGoogle 검색 엔진 및 쇼핑, 뉴스 크롤링 지원무료 5,000 요청, 이후 월 $50~Google 전용 크롤링 최적화
Apify크롤링 자동화, No-Code 스크래핑 가능무료(소량), 유료(월 $49~)초보자도 쉽게 사용 가능
DataScraper.io웹사이트에서 표 및 리스트 데이터 추출무료(제한적), 유료 플랜 있음웹 기반 크롤링 지원

 
상용 크롤링 서비스 활용 시 자동화 방지 우회, 빠르고 안정적인 데이터 수집(IP 차단 문제 해결)이 가능하며 프로그래밍 지식이 없어도 사용 가능하다는 장점이 있다. 또한 HTML 구조가 변경될 경우에도 서비스 측 업데이트로 크롤링이 정상적으로 유지되어 데이터 품질을 유지할 수 있으며, 대량 데이터를 수집 가능해 서버 비용과 시간을 절약할 수 있다.

Google 검색, 뉴스, 쇼핑 크롤링SerpAPI, ScraperAPI
대규모 웹사이트 크롤링 (Amazon, SNS 등)Bright Data, Oxylabs
코딩 없이 크롤링 자동화Apify
연구 및 분석용 데이터 수집Bright Data, Oxylabs
빠르고 간단한 웹 크롤링ScraperAPI

 

크롤링 실행 및 데이터 수집

 
① 크롤링 전략 설정

  • 정적 페이지 → BeautifulSoup 등의 라이브러리 활용 (HTML 소스 요청해 데이터 분석)
  • 동적 페이지 → Selenium 등의 라이브러리 활용 (JavaScript 렌더링 처리)
  • API 지원 → 일부 웹사이트는 API를 제공해 정해진 형식(JSON, XML 등)으로 데이터 반환.

② 크롤링 스케줄링

  • 데이터를 한 번 크롤링하는 것이 아니라 정기적으로 업데이트 필요
  • Airflow, Cron Job 등을 활용하여 자동화

③ 데이터 필터링 및 정제

  • 중복 데이터 제거 및 정규화
  • 자연어처리(NLP)를 활용한 키워드 추출 및 감성 분석 (예: NLTK, KoBERT)

④ 법적 이슈 및 윤리적 고려

  • 웹사이트 이용 약관 준수: Robots.txt 파일 확인 (https://example.com/robots.txt)
  • API 활용 우선: 공식 API가 제공되는 경우 API 사용 권장
  • 개인정보 보호 준수: 고객 데이터 수집 시 GDPR, 개인정보 보호법 준수
  • 과부하 방지: 크롤링 시 서버에 부담을 주지 않도록 요청 간격 조절 (time.sleep())

 
Requests와 Beautifulsoup을 사용해 구글 뉴스에서 특정 키워드(아메리칸도라이)를 검색하고 기사 헤드라인/링크를 가져온 코드(근데 마케터가 이런거 직접 돌릴 시간이 있어?.. 그냥 썸트렌드 같은거 쓰면 되지 않나)
 

럼프야 작작해

 
 
API(Application Programming Interface)는 애플리케이션 간의 데이터를 주고받고 기능을 호출할 수 있도록 하는 인터페이스.
API를 통해 기업은 외부 서비스와 연동해 데이터 수집, 마케팅 자동화 구현, 맞춤형 고객 경험 제공
 

 

광고 API구글 애즈(Google Ads) API
페이스북 마케팅 API
광고 캠페인 자동 생성/관리
특정 타겟 그룹 설정해 효율적인 광고 집행
광고 성과 데이터 실시간 분석 및 최적화
분석/트래킹 API구글 애널리틱스(Google Analytics) API웹사이트/앱의 유저 데이터 실시간 수집
유입 경로, 페이지 이탈률, 전환율 등 핵심 지표 분석
마케팅 성과에 따른 자동 보고서 생성
CRM 및 고객 데이터 API허브스팟(HubSpot) API
세일즈포스(Salesforce) API
고객의 구매이력, 문의기록을 실시간 분석 (맞춤형 마케팅)
고객 세그먼트 분류해 개인화된 이메일 캠페인 자동화
고객 유입부터 구매까지의 여정 추척, 자동 리타켓팅 실행
이메일 & 메시징 API트윌리오(Twilio) API
센드그리드(SendGrid) API
고객 행동에 따라 이메일, SMS, 푸시 알림 자동 발송
결제 알림, 장바구니 이탈 방지 메시지, 프로모션 메시지 자동화
API 통해 A/B 테스트 실행, 최적의 마케팅 메시지 도출
소셜 미디어 API트위터 API 
인스타그램 그래프 API
소셜 미디어 데이터 분석해 트렌드 파악, 해시태그 최적화
브랜드 언급 모니터링 통해 실시간 고객 피드백 수집
자동 포스팅 및 사용자 참석 데이터 분석

 
※ API를 활용한 마케팅 자동화 시 주의할 점

  • 데이터 보안 및 개인정보 보호: API 사용 시 GDPR, CCPA 등 데이터 보호 규정 준수 필요
  • API 요청 제한(Rate Limit): 특정 API는 요청 횟수 제한이 있어 효율적인 API 호출 전략 필요
  • 데이터 동기화 문제: 여러 API에서 데이터를 가져올 경우 실시간 동기화 고려 필요
  • API 업데이트 및 유지보수: 사용 중인 API의 버전이 업데이트되거나 폐기될 수 있어 지속적인 관리 필요

 

GA(구글 애널리틱스) 데이터 분석 실습 

분석 항목설명
Sessions (세션 수)사용자가 사이트를 방문한 횟수. 세션 = 30분 간 활동이 없으면 종료.
Users (사용자 수)특정 기간 동안 웹사이트를 방문한 고유 사용자 수
New Users (신규 사용자 수)처음 방문한 사용자 수
Pageviews (페이지 조회수)웹사이트에서 조회된 페이지 총 수
Pages per Session (세션당 페이지뷰)방문자가 한 세션 동안 조회한 평균 페이지 수 
  • 신규 사용자 - 재방문 사용자의 비율을 비교해 신규 유입 전략 개선
  • 세션당 페이지뷰가 낮다면 콘텐츠 연계성 강화 필요

1) 데이터 생성 및 CSV 파일 저장 코드

  • 하드코딩된 30일 간의 데이터를 사용해 세션 수(Sessions), 사용자 수(Users), 신규 사용자 수(New_Users), 페이지뷰(Pageviews), 세션당 페이지뷰(Pages_per_Session) 데이터 생성.
  • pandas.DataFrame 활용해 정리.
  • to_csv()를 사용해 google_analytics_data.csv로 저장

 
2) CSV 파일 로드 및 데이터 분석, 시각화 코드

  • read_csv()를 사용해 CSV 데이터 로드
  • 주요 지표(총 세션 수, 총 사용자 수, 신규 사용자 비율 등) 계산.

 
3) 데이터 시각화

  • 세션 수 및 페이지뷰 변화 (Daily Sessions and Pageviews) → 라인 그래프

plt.figure(figsize=(10, 5))
plt.plot(google_analytics_data["Date"], google_analytics_data["Sessions"], label="Sessions", marker='o', linestyle='-') plt.plot(google_analytics_data["Date"], google_analytics_data["Pageviews"], label="Pageviews", marker='s', linestyle='--')
plt.xlabel("Date")
plt.ylabel("Count")
plt.title("Daily Sessions and Pageviews")
plt.legend()
plt.xticks(rotation=45)
plt.grid()
plt.show()

  • 신규 사용자 대 기존 사용자 비율 (New Users vs Returning Users) → 막대 그래프

plt.figure(figsize=(8, 5))
plt.bar(["New Users", "Returning Users"], [total_new_users, total_users - total_new_users], color=['blue', 'gray'])
plt.xlabel("User Type")
plt.ylabel("Count")
plt.title(f"New Users vs Returning Users (New User Ratio: {new_user_ratio}%)")
plt.grid(axis='y')
plt.show()

  • 세션당 평균 페이지뷰 변화 (Average Pages per Session Over Time) → 막대 그래프

plt.figure(figsize=(8, 5))
plt.bar(["Average Pages per Session"], [avg_pages_per_session], color='green')
plt.ylabel("Pages per Session")
plt.title("Average Pages per Session Over Time")
plt.ylim(0, max(google_analytics_data["Pages_per_Session"]) + 1)
plt.grid(axis='y')
plt.show()
 

4) 인사이트 도출

  • 세션 수와 페이지뷰 수가 비례해 증가하는 경향을 보이며, 특정 날짜에서 두 값이 함께 상승하는 패턴.
  • 페이지뷰 수가 세션 수보다 3.65배 많아, 한 세션당 평균 3-4개의 페이지를 탐색하는 것으로 해석 가능.
  • 세션 수와 페이지뷰 수의 변화폭이 클 경우 특정 마케팅 활동(광고, 프로모, 이벤트 등)의 영향을 받았을 가능성.
  • 페이지뷰 증가를 위해 UX(사용자 경험) 개선, 내부 링크 최적화, 관련 콘텐츠 추천 시스템 도입 등 검토 가능.
  • 총 사용자 대비 신규 사용자 비율이 47.82%로 유입 전략이 효과적인 것을 알 수 있음.
  • 기존 사용자 비율이 52.18%로 재방문율도 안정적으로 유지되고 있음.
  • 신규 사용자 비율이 높을수록 SEO, 광고, 프로모션 전략이 성공적으로 작용하고 있다는 해석.
  • 기존 사용자 유지 전략 강화: 이메일 마케팅, 리타겟팅 광고, 맞춤형 추천 기능 도입 가능.
  • 신규 사용자 유입 지속 유지: 지속적인 SEO 최적화 및 광고 성과 분석 필요. 
  • 세션당 평균 페이지뷰: 4.17 (한 세션 동안 평균 4.17개의 페이지 탐색)
  • 세션당 평균 페이지뷰 수가 높다는 건 콘텐츠 간 연계성이 뛰어나다는 의미. 하지만 페이지뷰 수가 높아도 이탈률이 높다면 UX 문제가 있을 가능성.

 
크롤링 방지 사이트 판단 방법

 
robots.txt 확인

  • robots.txt: 웹사이트의 크롤러 접근을 허용하거나 차단하는 규칙을 정의한 파일
  • 예제: https://www.example.com/robots.txt
    • User-agent: * → 모든 크롤러에 적용됨
    • Disallow: /private/ → 특정 디렉토리 크롤링 금지
    • Allow: /public/ → 특정 디렉토리 크롤링 허용

예제 (크롤링 불가능한 경우)

User-agent: *
Disallow: /search
Disallow: /private

예제 (크롤링 가능한 경우)

User-agent: *
Allow: /

Disallow된 경로에 접근하는 것은 웹사이트 운영자의 정책을 위반할 가능성이 있음
 
동적 로딩 확인

  • JavaScript로 콘텐츠를 로딩하는 사이트는 requests와 같은 정적 크롤링 방식으로 데이터를 가져올 수 없다.
  • 개발자 도구(Chrome F12 → Network → XHR 탭)에서 페이지 로딩 방식 확인 가능.
  • JavaScript 기반 사이트는 Selenium 또는 Playwright 같은 동적 크롤링 도구를 사용해야 한다.

요청 차단 및 자동화 탐지

  • 사이트가 크롤링을 방지하는 경우, 다음과 같은 현상이 발생할 수 있다.
    1. 403 Forbidden, 429 Too Many Requests 오류 발생
    2. 요청을 보내면 CAPTCHA(자동입력방지) 페이지가 나타남
    3. 특정 시간 동안 접속이 차단되거나 IP가 블랙리스트에 등록됨
    4. HTML 응답 대신 빈 페이지 또는 가짜 데이터가 반환됨

해결 방법

  • User-Agent를 브라우저처럼 변경하여 자동화 탐지를 우회할 수 있다.
  • IP가 차단된 경우, VPN 또는 프록시를 사용하여 다른 IP로 요청을 보내야 한다.
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
}
response = requests.get("<https://www.example.com>", headers=headers)

 
 

API 제공 여부 확인

 
크롤링은 법적으로 민감한 이슈이며, 국가 및 웹사이트의 정책에 따라 다르게 적용될 수 있다. 크롤링을 수행하기 전 robots.txt, 동적 로딩 여부, 자동화 탐지, API 제공 여부 등을 확인해 크롤링 가능성 판단 & 또한, 저작권법, 개인정보 보호법, 서비스 약관(TOS) 위반 여부를 고려해야 하며, 법적 문제가 발생하지 않도록 주의해야 한다. 공공 데이터 활용, API 이용, 서비스 약관 준수 등의 원칙을 지킨다면 법적 리스크를 최소화하면서 안정적으로 크롤링을 수행할 수 있다.
 
웹사이트에서 데이터를 수집하는 과정에서 자동화 탐지, IP 차단, 동적 로딩 문제 등 여러 제약이 발생할 수 있는데, 이런 경우 상용 크롤링 서비스를 이용하면 보다 안정적으로 데이터를 수집할 수 있다. 이러한 서비스들은 프록시(IP 변경), CAPTCHA 우회, API 지원 등을 제공해 직접 크롤링 시에 발생하는 문제를 해결하는 데 도움을 준다.