"""쿠팡 검색결과 셀렉터(외부화). 쿠팡 클래스는 webpack 해시 suffix(예: ProductUnit_productUnit__Qd6sv)를 달고 있어 배포마다 suffix 가 바뀐다. 따라서 접두 부분 매칭([class*=...])으로 견고성을 확보한다. 레이아웃이 바뀌면 이 파일만 고치면 되도록 파서에서 분리한다(new.md: 셀렉터 외부 설정). """ from dataclasses import dataclass @dataclass(frozen=True) class CoupangSelectors: card: str = "li[class*=ProductUnit_productUnit]" name: str = "[class*=ProductUnit_productNameV2]" price_area: str = "[class*=PriceArea_priceArea]" orig_price: str = "del" # price_area 내부: 정가(취소선) link: str = "a[href]" image: str = "figure img" data_id_attr: str = "data-id" # li 의 vendorItemId # 배송 뱃지: 로고 이미지 src 로 판별(배송 텍스트는 해시 없는 인라인 스타일 span 이라 텍스트 매칭). rocket_badge: str = "img[src*=rocket]" rocket_merchant_marker: str = "rocket_merchant" # src 에 포함 시 판매자로켓, 그 외 rocket* 는 로켓배송 SELECTORS = CoupangSelectors()