Best Buy와 Walmart와 같은 주요 소매업체에서 현지화된 프로모션 데이터를 자동으로 수집하는 방법

발행: (2025년 12월 11일 오후 08:37 GMT+9)
6 min read
원문: Dev.to

Source: Dev.to

데이터‑드리븐 애플리케이션이나 프로모션·할인 추적 도구를 구축할 때, Best Buy와 Walmart와 같은 소매업체에서 정확하고 지역화된 데이터를 얻는 것이 중요합니다. 소매업체 웹사이트를 직접 스크래핑하는 것은 지역별 차이와 IP 제한 때문에 어려울 수 있습니다. 아래에서는 소매업체 API, 웹 스크래핑, 프록시 서비스, 자동화 도구를 활용해 지역화된 프로모션 데이터를 수집하는 실용적인 접근 방식을 소개합니다.

1. 구조화된 데이터를 위한 소매업체 API 활용

Walmart API

Walmart의 Open API는 제품, 가격, 프로모션 데이터를 제공하며 위치(예: 우편번호)별로 필터링할 수 있습니다.

import requests

# Walmart API endpoint
api_url = "https://api.walmartlabs.com/v1/items"

params = {
    'apiKey': 'YOUR_API_KEY',
    'zipCode': '94043',          # 위치 기반 프로모션을 위한 예시 우편번호
    'categoryId': '3944',        # 예시 카테고리(예: 전자제품)
}

response = requests.get(api_url, params=params)
data = response.json()

# Print promotional data
for item in data.get('items', []):
    print(item['name'], item['salePrice'])

Best Buy API

Best Buy 개발자 API도 유사한 기능을 제공합니다. 직접 지역 프로모션을 반환하지는 않지만, 매장 위치별로 결과를 필터링해 지역화된 오퍼를 추정할 수 있습니다.

2. Python을 이용한 웹 스크래핑: Best Buy와 Walmart에서 데이터 추출

웹 스크래핑 라이브러리

Python의 BeautifulSoupScrapy 같은 라이브러리를 사용하면 HTML을 파싱하고 프로모션 요소를 추출할 수 있습니다.

예시: Best Buy 프로모션 페이지 스크래핑

import requests
from bs4 import BeautifulSoup

# Best Buy promotional page
url = "https://www.bestbuy.com/site/promo/sale"

response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

# Locate promotional elements
promos = soup.find_all('div', class_='promo-item')

# Output promo details
for promo in promos:
    title = promo.find('h3').get_text(strip=True)
    price = promo.find('span', class_='promo-price').get_text(strip=True)
    print(f"Promo: {title} | Price: {price}")

이 기본 스크립트는 우편번호나 도시 이름과 같은 쿼리 파라미터를 추가해 지역별 프로모션을 대상으로 확장할 수 있습니다.

3. 지리‑타깃 데이터를 위한 프록시 사용

많은 소매업체가 IP 차단이나 속도 제한 같은 안티‑봇 조치를 적용합니다. 회전 프록시를 사용하면 다양한 지리적 위치에서 요청을 시뮬레이션해 이러한 제한을 우회할 수 있습니다.

회전 프록시를 이용한 스크래핑 성능 향상

Rapidproxy 은 지리별 IP 회전을 제공하므로 지역화된 프로모션 데이터를 수집하는 데 이상적입니다.

예시: requests와 Rapidproxy 사용

import requests

proxies = {
    'http':  'http://user:password@your-rapidproxy-instance.com:port',
    'https': 'http://user:password@your-rapidproxy-instance.com:port',
}

# Example Best Buy promotions page
url = 'https://www.bestbuy.com/site/promo/sale'

response = requests.get(url, proxies=proxies)
print(response.text)

프록시를 회전시키면 차단을 일으키거나 부정확한 결과를 받지 않고 여러 지역에서 데이터를 수집할 수 있습니다.

4. Selenium으로 동적 콘텐츠 처리

일부 소매업체 페이지는 JavaScript를 통해 프로모션을 로드하므로 정적 HTML 파싱만으로는 충분하지 않을 수 있습니다. Selenium은 실제 브라우저를 구동해 동적 콘텐츠가 렌더링될 때까지 기다린 뒤 데이터를 추출할 수 있게 해줍니다.

동적 스크래핑을 위한 Selenium 사용

from selenium import webdriver
from selenium.webdriver.common.by import By

# Initialize WebDriver (ensure the appropriate driver is installed)
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')

# Navigate to Best Buy promotions page
driver.get('https://www.bestbuy.com/site/promo/sale')

# Wait for dynamic content to load
driver.implicitly_wait(5)

# Extract promotional elements
promos = driver.find_elements(By.CLASS_NAME, 'promo-item')

# Output promo details
for promo in promos:
    title = promo.find_element(By.TAG_NAME, 'h3').text
    price = promo.find_element(By.CLASS_NAME, 'promo-price').text
    print(f"Promo: {title} | Price: {price}")

driver.quit()

Selenium을 사용하면 JavaScript로 렌더링된 요소와 상호작용할 수 있어 모든 프로모션 정보를 포착할 수 있습니다.

결론

소매업체 API, 웹 스크래핑, 회전 프록시, 브라우저 자동화를 결합하면 Walmart와 Best Buy와 같은 주요 소매업체에서 지역화된 프로모션 데이터를 신뢰성 있게 수집할 수 있습니다. 딜‑트래킹 앱을 만들든 시장 분석을 수행하든, 이러한 기술을 활용하면 IP 차단 등 접근 제약을 최소화하면서 대규모로 지역별 프로모션을 수집·처리·분석할 수 있습니다.

Back to Blog

관련 글

더 보기 »