크롤링 시 중복 값 이슈
Jsoup을 사용해서 전자상거래 웹사이트에서 제품 데이터를 크롤링할 때 중복된 가격 값이 검색되었음.
예를 들어서, 상품의 실제 가격이 '2000'인 경우 검색된 가격은 '20002000'으로 표시됨.
이 잘못된 데이터가 DB에 저장되고 Front에 표시됨.
HTML 구조
웹사이트의 동일한 제품 컨테인 내에 여러 개의 '
' 태그가 존재.
Ex. 현재 가격의 경우 p class="pay", 원래 가격의 경우 p class="sale_pay"
Jsoup의 선택기는 'p' 태그를 모두 검색하고 해당 텍스트 값을 연결.
<div class="item-overlay">
<p class="pay">2000원</p>
<p class="sale_pay">2500원</p></div>
String priceText = element.select("p.pay").first().text();
double price = 0.0;
try {
if (!priceText.isEmpty()) {
price = Double.parseDouble(priceText.replaceAll("[^0-9]", ""));
}
} catch (NumberFormatException e) {
price = 0.0;
}