본문 바로가기
파이썬 기초

[파이썬 기초] 쿠팡 크롤링(2025-05-10 기준)

by wildOjisan 2025. 5. 10.

coupang_crawler.py
0.00MB
requirements.txt
0.00MB
source_url.txt
0.00MB

 

!! 주의 - 쿠팡은 크롤링을 허용하지 않습니다. 이걸 실제 서비스에 사용할시 본인이 법적 책임지게 됩니다.

순전히 학습 용도로만 쓰십시오.

학습의 목적은 요즘 웹사이트들은 크롤링을 막는곳이 많고, 그래도 굳이 비 상업적으로라도 하고싶다면, 이러한 복잡한 절차를 거쳐야 한다는게 취지입니다.

!! 언제 작동 안할지 모릅니다. 이유는 쿠팡은 사람들이 크롤링 편히 하도록 지원해주는 복지시설 단체가 아니기 때문에 사이트의 구조나 보안이 언제 어떻게 바뀔지모릅니다.

 

✅ 목표

쿠팡 사이트에서 원하는 상품 목록을 검색하고,
상품 정보(이름, 가격, 이미지, 배송 등)를 엑셀 파일로 저장하는 프로그램입니다.

 

📦 사용하는 도구들

import pandas as pd         # 표 형식 데이터 다루기
import time                 # 잠깐 멈춤 (로딩 대기용)
from urllib.parse import quote     # 검색어를 웹 주소용으로 변환
import undetected_chromedriver as uc  # 크롬 웹브라우저 자동조작 (탐지 회피)
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from openpyxl import load_workbook  # 엑셀 작업용

💡 selenium: 사람처럼 웹페이지를 자동으로 조작해주는 도구
💡 undetected_chromedriver: 쿠팡처럼 로봇 접근을 막는 사이트도 뚫도록 도와줌
💡 pandas: 데이터를 정리해서 엑셀로 저장하기 편하게 만들어주는 도구

 

🧠 프로그램 흐름 요약

  1. 사용자에게 검색어를 입력받는다.
  2. 쿠팡 검색 결과 페이지에 접속한다.
  3. 상품 정보를 하나씩 읽어온다.
  4. 엑셀 파일로 저장한다. (배송유형별로 시트 분리)

1. 사용자 입력

if __name__ == "__main__":
    keyword = input("검색 키워드를 입력하세요: ")

 

2. 검색어를 웹 주소에 맞게 인코딩

encoded_keyword = quote(keyword)

예: 노트북 → "%EB%85%B8%ED%8A%B8%EB%B6%81" (한글은 웹 주소에 못 들어가니까 바꿔줌)

 

3. 크롬 드라이버 설정 및 실행

options = uc.ChromeOptions()
options.add_argument("--disable-gpu")
options.add_argument("user-agent=Mozilla/5.0")

driver = uc.Chrome(service=Service("chromedriver.exe"), options=options)

 

  • 쿠팡은 봇 차단이 심해서 undetected_chromedriver를 씁니다.
  • 크롬을 실제로 띄우고 검색 결과 페이지로 이동합니다.

 

4. 상품 목록 페이지 접속

url = f"https://www.coupang.com/np/search?q={encoded_keyword}&channel=user&listSize=72&page=1"
driver.get(url)

 

쿠팡의 상품 검색 결과 페이지를 엽니다.

 

 

5. 상품 정보 추출

items = driver.find_elements(By.CLASS_NAME, "search-product")

 

  • .search-product라는 클래스 이름으로 모든 상품 박스를 가져옵니다.
  • 각 상품마다 아래 내용을 뽑아냅니다:

항목 설명

상품명 .name 클래스에서 텍스트 추출
링크 <a> 태그에서 href 속성 추출
정가 .base-price 클래스
판매가 .price-value 클래스
카드할인 .ccid-txt 클래스
적립금 .reward-cash-txt 클래스
이미지 .search-product-wrap-img 클래스에서 src
배송유형 "로켓배송" 이미지가 있으면 로켓배송

 

rocket = "로켓배송" if item.find_elements(By.XPATH, './/img[@alt="로켓배송"]') else "일반배송"

 

 

6. 이미지 셀에 수식 형태로 삽입

image_formula = f'=IMAGE("{img_url}")'

엑셀에서 이미지를 표시하려면 =IMAGE("URL") 형태로 넣어야 합니다.

 

 

7. 데이터 정리 후 엑셀 저장

df = pd.DataFrame(data)
rocket_df = df[df['배송유형'] == '로켓배송']
normal_df = df[df['배송유형'] != '로켓배송']

전체 데이터프레임(df)을

  • 로켓배송 상품만(rocket_df)
  • 일반배송 상품만(normal_df)
    으로 나눕니다.
with pd.ExcelWriter(filename, engine='openpyxl', mode='w') as writer:
    df.to_excel(writer, sheet_name='전체상품', index=False)
    rocket_df.to_excel(writer, sheet_name='로켓배송', index=False)
    normal_df.to_excel(writer, sheet_name='일반배송', index=False)

각 시트를 엑셀 파일로 저장합니다.

 

 

8. 이미지 수식 적용 (엑셀에서 진짜 이미지처럼 보이게)

for sheet_name in ['전체상품', '로켓배송', '일반배송']:
    ws = wb[sheet_name]
    for row in range(2, ws.max_row + 1):
        cell = ws.cell(row=row, column=image_col_idx)
        if cell.value.startswith("=IMAGE"):
            cell._value = cell.value
            cell.data_type = 'f'

엑셀에 그냥 문자열이 아니라 진짜 수식으로 인식시키는 과정입니다.

 

 

✅ 결과

[노트북_크롤링결과.xlsx]
├─ 전체상품 시트
├─ 로켓배송 시트
└─ 일반배송 시트

 

 

🎉 실행 방법 요약

  1. chromedriver.exe 필요 (같은 폴더에 둬야 함)
  2. 터미널에서 실행:
python coupang_crawler.py

  3. 키워드 입력 후 엑셀 생성!

'파이썬 기초' 카테고리의 다른 글

[파이썬 기초] 반복문  (0) 2025.05.12
[파이썬 기초] 크롤링 개념  (0) 2025.05.10
[파이썬 기초] seaborn  (0) 2025.05.08
[파이썬 기초] matplotlib  (0) 2025.05.08
[파이썬 기초] pandas  (0) 2025.05.08