Python

🥕 Python으로 당근마켓 상품 검색 엑셀 자동화 만들기! (샘플 코드 포함)

지오준 2025. 3. 10.
반응형

안녕하세요, 여러분! 오늘은 Python을 활용해서 당근마켓 상품을 자동으로 검색하고 엑셀에 정리하는 프로그램을 만들어볼 거예요. 😎

"당근마켓에서 원하는 상품이 올라오면 바로 확인하고 싶다!"
"매번 검색하기 귀찮은데, 자동으로 업데이트되면 좋겠다!"

이런 고민을 해결하는 자동 검색 & 엑셀 저장 프로그램을 함께 만들어보겠습니다. 🚀

📌 1. 프로젝트 개요

사용 기술: Python, Selenium, OpenPyXL
주요 기능:

  1. 당근마켓에서 원하는 키워드로 검색
  2. 검색된 상품 정보를 크롤링
  3. 엑셀 파일(.xlsx)로 저장

🔧 2. 필요한 라이브러리 설치

우선, 필요한 라이브러리를 설치해야겠죠? 터미널이나 CMD에서 아래 명령어를 실행하세요.

pip install selenium openpyxl pandas

Selenium → 웹 자동화(당근마켓 검색)
OpenPyXL → 엑셀 파일(.xlsx) 생성
Pandas → 데이터 정리


🏗 3. 코드 작성

이제 본격적으로 Python 코드를 작성해봅시다!

3.1. Selenium으로 당근마켓 검색 자동화

먼저, Chrome 브라우저를 자동으로 열어서 당근마켓에서 특정 키워드를 검색하는 코드부터 작성해볼게요.

💡 크롬 드라이버 다운로드:
Chrome WebDriver 다운로드
본인 브라우저 버전에 맞는 드라이버를 다운로드한 후, Python 코드에서 사용할 수 있도록 경로를 지정해 주세요.

🔹 Step 1: Selenium을 이용한 자동 검색

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

# Chrome WebDriver 경로 지정
chrome_driver_path = "chromedriver.exe"  # 본인 환경에 맞게 변경하세요

# 크롬 브라우저 실행
driver = webdriver.Chrome(chrome_driver_path)
driver.get("https://www.daangn.com/")

# 검색어 입력
search_box = driver.find_element(By.NAME, "keyword")  # 검색창 찾기
search_box.send_keys("아이폰")  # 원하는 검색어 입력
search_box.send_keys(Keys.RETURN)  # Enter 키 입력

time.sleep(3)  # 페이지 로딩 대기

print("✅ 검색 완료!")

이 코드의 역할

  • 크롬 브라우저를 열고 당근마켓 접속
  • 검색창에 키워드 입력 후 검색 수행
  • 검색 결과 페이지 로딩

3.2. 상품 정보 크롤링

검색 결과에서 상품명, 가격, 위치, 등록 시간 등의 정보를 가져오겠습니다.

🔹 Step 2: 상품 정보 가져오기

from selenium.webdriver.common.by import By

# 검색 결과 크롤링
items = driver.find_elements(By.CLASS_NAME, "cards-wrap")[0].find_elements(By.TAG_NAME, "article")

data_list = []

for item in items:
    try:
        title = item.find_element(By.CLASS_NAME, "article-title").text  # 상품명
        price = item.find_element(By.CLASS_NAME, "article-price").text  # 가격
        location = item.find_element(By.CLASS_NAME, "article-region-name").text  # 위치
        time_posted = item.find_element(By.CLASS_NAME, "article-time").text  # 등록 시간
        link = item.find_element(By.TAG_NAME, "a").get_attribute("href")  # 상품 링크

        data_list.append([title, price, location, time_posted, link])
    except:
        pass

print(f"✅ 총 {len(data_list)}개의 상품 정보를 가져왔습니다.")

이 코드의 역할

  • 상품 정보를 find_element를 이용해 가져오기
  • 리스트 형태로 정리

3.3. 엑셀 파일로 저장

마지막으로, 가져온 데이터를 엑셀 파일(.xlsx)로 저장하겠습니다.

🔹 Step 3: OpenPyXL로 엑셀 저장

import openpyxl

# 엑셀 파일 생성
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "당근마켓 검색 결과"

# 엑셀 헤더 추가
ws.append(["상품명", "가격", "위치", "등록 시간", "링크"])

# 데이터 추가
for row in data_list:
    ws.append(row)

# 엑셀 파일 저장
wb.save("당근마켓_검색결과.xlsx")
print("✅ 엑셀 저장 완료!")

이 코드의 역할

  • OpenPyXL을 사용해 엑셀 파일 생성
  • 헤더(제목) 추가
  • 가져온 데이터를 한 줄씩 추가
  • wb.save()로 파일 저장

🎯 4. 전체 코드

이제 전체 코드를 한 번에 정리해보겠습니다.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
import openpyxl

# 1️⃣ 크롬 드라이버 실행
chrome_driver_path = "chromedriver.exe"
driver = webdriver.Chrome(chrome_driver_path)
driver.get("https://www.daangn.com/")

# 2️⃣ 검색어 입력 및 실행
search_box = driver.find_element(By.NAME, "keyword")
search_box.send_keys("아이폰")
search_box.send_keys(Keys.RETURN)

time.sleep(3)

# 3️⃣ 검색 결과 크롤링
items = driver.find_elements(By.CLASS_NAME, "cards-wrap")[0].find_elements(By.TAG_NAME, "article")
data_list = []

for item in items:
    try:
        title = item.find_element(By.CLASS_NAME, "article-title").text
        price = item.find_element(By.CLASS_NAME, "article-price").text
        location = item.find_element(By.CLASS_NAME, "article-region-name").text
        time_posted = item.find_element(By.CLASS_NAME, "article-time").text
        link = item.find_element(By.TAG_NAME, "a").get_attribute("href")

        data_list.append([title, price, location, time_posted, link])
    except:
        pass

print(f"✅ 총 {len(data_list)}개의 상품 정보를 가져왔습니다.")

# 4️⃣ 엑셀 저장
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "당근마켓 검색 결과"
ws.append(["상품명", "가격", "위치", "등록 시간", "링크"])

for row in data_list:
    ws.append(row)

wb.save("당근마켓_검색결과.xlsx")
print("✅ 엑셀 저장 완료!")

# 5️⃣ 브라우저 종료
driver.quit()

🎉 5. 마무리

이제 실행해보면, 당근마켓에서 자동으로 상품을 검색하고 엑셀 파일에 저장되는 걸 확인할 수 있습니다!

💡 추가 기능 아이디어

  • 특정 가격 이하의 상품만 저장
  • 새로운 상품이 올라올 때만 업데이트
  • 자동 실행 스케줄러 적용

이제 여러분도 직접 실행해보면서 커스터마이징해 보세요! 🚀
궁금한 점이 있으면 댓글 남겨주세요. 😉

그럼 다음 포스팅에서 만나요! 👋

반응형

댓글