최근에 네이버 쇼핑에서 모델 번호(예: 5889W1A012E) 를 기준으로 가격비교 탭을 크롤링해야 할 일이 생겼다. 모델 개수는 무려 4,500개. 기존에 쓰던 Selenium으로는 자꾸 막히고 불안정해서, 이번엔 SeleniumBase를 써보기로 했다. 셀레니움베이스가 Undetected Chrome 드라이버도 지원해서 네이버처럼 보안 강한 사이트에 꽤 잘 먹힌다.
네이버 쇼핑에 모델명 검색 → 상품 클릭 → 가격비교 탭 진입
가격비교 영역에 나오는 모든 판매처와 가격정보를 크롤링
4500개 모델을 루프 돌려 처리
결과는 CSV 또는 BigQuery로 저장
pip install seleniumbase
🧪 샘플 코드 (1개 모델)
from seleniumbase import SB
model = "5889W1A012E"
with SB(uc=True, headless=True) as sb:
sb.open(f"https://search.shopping.naver.com/search/all?query={model}")
sb.click(f"a:contains('{model}')")
sb.click('button:contains("가격비교")')
sb.sleep(1)
# '더보기' 누르기
while sb.is_element_visible('button:contains("더보기")'):
sb.click('button:contains("더보기")')
sb.sleep(1)
sb.scroll_to_bottom()
sb.sleep(1)
# 판매처 & 가격 추출
sellers = sb.find_elements("a.mall_name")
prices = sb.find_elements("span.price")
for s, p in zip(sellers, prices):
print(f"{model} | {s.text.strip()} | {p.text.strip()}")
import pandas as pd
df = pd.DataFrame(results, columns=["model", "mall", "price"])
df.to_csv("naver_prices.csv", index=False)
uc=True → Undetected Chrome 자동 적용
headless=True → 브라우저 없이 실행
sb.sleep() → 요청 간 살짝 쉬어주기 (네이버 민감함)
필요시 User-Agent도 커스텀 가능
SeleniumBase로 하면 네이버도 안정적으로 크롤링 가능
일반 셀레니움보다 로딩 대기나 에러에 훨씬 강함
4500개 모델도 무리 없이 처리 가능
프록시나 CAPTCHA 대응은 추후 셋업 가능
계속 반복해서 막히는 크롤링이라면, SeleniumBase는 꽤 괜찮은 무기다.