Jsoup 크롤링 시 중복 값 이슈

gminnimk·2024년 11월 23일
0

문제 해결

목록 보기
9/18
post-thumbnail



크롤링 시 중복 값 이슈




📜 문제 상황

  • Jsoup을 사용해서 전자상거래 웹사이트에서 제품 데이터를 크롤링할 때 중복된 가격 값이 검색되었음.

  • 예를 들어서, 상품의 실제 가격이 '2000'인 경우 검색된 가격은 '20002000'으로 표시됨.

  • 이 잘못된 데이터가 DB에 저장되고 Front에 표시됨.




📜 문제 원인

  • Jsoup이 가격 관련 HTML 요소를 선택하고 구문 분석하는 방식으로 인해 발생.
  • 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>

  • select("p.pay").text()를 사용할 때 Jsoup에는 두 태그가 모두 포함되어 20002000과 같은 연결된 값이 생성




📜 문제 해결


  • 원하는 가격 값이 포함된 특정 'p' 태그만 타겟팅하도록 'select()' 메서드를 업데이트.
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;
}

0개의 댓글