데이터 분석 part

웹 크롤링 개요

bleufonce 2025. 2. 16. 17:37

 

크롤링이란?

  • 웹 크롤링은 웹사이트에서 데이터를 자동으로 수집하는 기술이다. 크롤러 또는 스크래퍼라고 불리는 프로그램이 웹페이지의 HTML을 가져와 특정 정보를 추출하는 방식으로 동작한다.
  • 크롤링은 뉴스, 상품 가격, 리뷰, 통계 데이터 등 다양한 정보를 자동으로 수집하는 데 활용되며, 검색 엔진, 가격 비교 사이트, 데이터 분석 등의 분야에서 필수적인 기술이다.

 

그로스 마케팅에서 크롤링의 이유와 목적

  • 그로스 마케팅에서 크롤링은 데이터를 자동으로 수집하여 경쟁사 분석, 소비자 행동 파악, 광고 최적화, 가격 조정 등 다양한 마케팅 전략을 개선하는 데 활용된다.
  1. 경쟁사 및 시장 분석 – 경쟁사의 가격 정책, 프로모션, 마케팅 전략을 실시간으로 추적하여 경쟁 우위를 확보하고, 업계 트렌드를 분석하여 소비자 선호도 변화에 빠르게 대응.
  2. 소비자 행동 및 리뷰 분석 – 소셜 미디어와 쇼핑몰 리뷰를 크롤링하여 소비자의 피드백과 선호도를 분석, 이를 바탕으로 제품 개선 및 맞춤형 마케팅 전략 수립.
  3. 광고 최적화 및 키워드 분석 – 검색 엔진과 SNS에서 인기 키워드와 검색 트렌드를 수집하여 SEO 및 광고 성과를 극대화하고, 효과적인 타겟팅 전략 수립.
  4. 리드(잠재 고객) 발굴 – 기업 웹사이트나 채용 공고, SNS 데이터를 분석하여 B2B 리드 발굴 및 특정 관심사를 가진 소비자를 타겟팅하여 맞춤형 마케팅 진행.
  5. 가격 비교 및 동적 가격 조정 – 경쟁사의 가격 데이터를 실시간으로 수집하여 다이내믹 프라이싱(Dynamic Pricing) 전략 적용, 시장 경쟁력을 확보하기 위해 최적의 가격 책정.
  6. 콘텐츠 마케팅 전략 수립 – 인기 있는 블로그, 뉴스, SNS 콘텐츠를 분석하여 소비자 관심 주제를 파악하고, 이를 바탕으로 효과적인 블로그, 유튜브, 뉴스레터 콘텐츠 제작.
  7. 제품 수요 예측 및 재고 관리 – 이커머스 플랫폼의 판매 데이터와 검색량을 크롤링하여 수요 예측, 이를 활용해 재고 관리 및 마케팅 캠페인 기획.
  8. SNS 및 커뮤니티 모니터링 – 트위터, 인스타그램, 유튜브 등에서 브랜드 관련 데이터를 수집하여 소셜 리스닝(Social Listening)을 수행, 브랜드 인지도와 소비자 반응 분석.

즉, 크롤링을 통해 경쟁 시장을 분석하고 소비자 행동을 파악하며, 이를 기반으로 마케팅 전략을 최적화하여 성장을 촉진할 수 있다.

 

 

※ 요즘은 기업간 크롤링 못하게 서로 전쟁이다.

영상인식 크롤링 - 기록이 남지 않아서 좋음

※ 전통적 크롤링 - 법률을 아주 조심해야함. 

 

 

크롤링 시 주의해야 할 사항

스타트업이 크롤링을 활용할 때, 법적 문제를 피하기 위한 가이드라인을 따라야 한다.

  • 웹사이트 이용 약관 준수: Robots.txt 파일 확인 (ex) https://사이트명.com/robots.txt)
  • API 활용 우선: 공식 API가 제공되는 경우 API 사용 권장 - 안전한 방법
  • 개인정보 보호 준수: 고객 데이터 수집 시 GDPR(유럽 개인정보보호법), 개인정보 보호법 준수
  • 과부하 방지: 크롤링 시 서버에 부담을 주지 않도록 요청 간격 조절 (time.sleep())   - 동시 접속시 과부하될수 있음(DDOS공격으로 오해받을 수 있다.)
  • 웹사이트 변경 가능성을 고려해야 한다 - 웹사이트의 구조가 바뀌면 기존 크롤링 코드가 동작하지 않을 수 있다.(이미지 안삭으로 하면 찾을 수 있음(AI))
  • 크롤링한 데이터는 무단배포 절대금지 - 소유자 허가 필수, 공공데이터를 활용하는 것이 안전.
  • 자동화 탐지 우회 - 일부 웹사이트는 자동화 접근 차단 위해 CAPTCHA 또는 로그인 인증을 요구. User-Agent를 변경하거나 프록시를 활용하는 등의 방법으로 우회가능.

 

크롤링 법적 판단 기준 - 법률기준

  • 저작권법, 개인정보 보호법 반드시 준수
  • 서비스 약관(TOS)위반 여부 - 대부분의 웹사이트는 크롤링을 제한하는 서비스 약관(TOS)을 포함하고 있다. 중요하니 항상 확인하자.

 

크롤링 방지 사이트 판단하기

 

1. robots.txt 확인

사이트마다  https://사이트명.com/robots.txt) 들어가서 크롤링이 가능한지 확인해보아야한다.

 

크롤링이 불가능한 경우

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

 

크롤링이 가능한 경우

User-agent: *
Allow: /

 

 

주요 규칙:

  • User-agent: * → 모든 크롤러에 적용됨
  • Disallow: /private/ → 특정 디렉토리 크롤링 금지
  • Allow: /public/ → 특정 디렉토리 크롤링 허용

 

2. 동적 로딩 확인 

확인이 좀 힘들다.

JavaScript로 콘텐츠를 로딩하는 사이트는 requests와 같은 정적 크롤링 방식으로 데이터를 가져올 수 없다.

- 별도 크롤링하는 '셀레늄'이라는 것이 있음.

개발자 도구(Chrome F12 → Network → XHR 탭)에서 페이지 로딩 방식 확인 가능.

 

 

 

3. API 제공 여부 확인 - API 를 통해 접근하는 것이 안전.

일부 웹사이트는 데이터를 제공하기 위해 공식 API를 제공하며, 크롤링 대신 API를 사용하는 것이 권장됨.

 

ex)

Google 검색 API: https://developers.google.com/custom-search/v1/overview

Twitter API: https://developer.twitter.com/en/docs

OpenWeather API: https://openweathermap.org/api

 

페이지 소스보기 들어갈 수 있으면 크롤링 가능

 

 

 

정적 크롤링을 사용한 예시 (requests 와 BeautifulSoup 사용)

  • Google 뉴스에서 특정 키워드(예: "AI")를 검색하고, 뉴스 제목과 링크를 가져오는 코드
import requests
from bs4 import BeautifulSoup
from urllib.parse import quote_plus, urljoin

# 🔹 검색어 입력 (변경 가능)
search_query = "인공지능"

# 🔹 Google 뉴스 검색 URL (검색어 인코딩 포함) # 구글 뉴스컴색을 할 수 있게 만들어 줌.
google_news_url = f"https://www.google.com/search?q={quote_plus(search_query)}&tbm=nws"

# 🔹 User-Agent 설정 (자동화 감지 방지)
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"
}

# 🔹 HTTP 요청 보내기
response = requests.get(google_news_url, headers=headers)

# 🔹 응답 확인
if response.status_code == 200:
    soup = BeautifulSoup(response.text, "html.parser")

    # 🔹 뉴스 검색 결과 찾기
    news_results = soup.find_all("div", class_="SoaBEf")  # ✅ Google 뉴스 검색 결과 태그

    # 🔹 최대 10개 뉴스 가져오기
    for idx, news in enumerate(news_results[:10], start=1):
        try:
            # 뉴스 제목 추출
            title_tag = news.find("h3")
            title = title_tag.text.strip() if title_tag else "제목 없음"

            # 뉴스 설명 추출 (Google이 종종 변경하는 요소)
            desc_tag = news.find("div", class_="GI74Re nDgy9d")
            if not desc_tag:
                desc_tag = news.find("div", class_="BNeawe s3v9rd AP7Wnd")
            description = desc_tag.text.strip() if desc_tag else "설명 없음"

            # 뉴스 링크 추출 (Google 상대 URL을 절대 URL로 변환)
            link_tag = news.find("a")
            link = urljoin("https://www.google.com", link_tag["href"]) if link_tag else "링크 없음"

            # 결과 출력
            print(f"{idx}. 제목: {title}")
            print(f"   설명: {description}")
            print(f"   링크: {link}")
            print("-" * 50)

        except Exception as e:
            print(f"뉴스 정보를 가져오는 중 오류 발생: {e}")

else:
    print(f"Google 요청 실패: 상태 코드 {response.status_code}")

 

 

 

상용 크롤링 서비스 

  • 안정적인 수집 가능. 내가 직접 크롤링 하기보다 크롤링 서비스를 이용하면 안전하다.

 

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

※ SerpAPI 와 Apify를 많이 쓴다.

 

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

※ 이미지 추출해 영상인식으로 크롤링 하는 방법이 강추됨.

  • 일반적인 웹 크롤링 대신 로봇 프로세스 자동화(RPA) 도구를 사용하여 크롤링 작업을 수행할 규칙을 설정하고, 로그인, 데이터 수집하여 이미지를 분석하는 방식(영상 인식)을 활용한 크롤링 수행이 좋다. 보안이 강한 사이트나 동적인 웹페이지에서 데이터를 추출할 때 유용한 방법.