Web Analytics

ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java 뽐뿌 뽐뿌게시판 크롤링 Jsoup 샘플
    개발 2026. 3. 7. 14:21

    목차

      Java 뿜뿌 뽐뿌게시판 크롤링 Jsoup 샘플
      Java 뿜뿌 뽐뿌게시판 크롤링 Jsoup 샘플



      상품 정보가 넘쳐나는 뽐뿌게시판을 크롤링하는 코드를 jsoup으로 긁어오는 샘플입니다.
      웹 크롤링은 손으로 하나하나 클릭하며 뽐뿌 핫딜을 찾는 것을 대신합니다.
      프로그램이 대신 페이지에 들어가서 제목이나 링크 그리고 날짜 등을 가져옵니다.
      jsoup은 Java에서 HTML을 다루는 최고의 라이브러리입니다.

      jsoup은  가볍고 빠릅니다.

       


      jsoup

      jsoup는 JavaScript 실행 불가이므로 동적인 Ajax로 불러오는 데이터는 처리하지 못합니다.
      대신 빠른 속도로 가져와서 HTML 파싱을 해 줍니다.

      https://jsoup.org

       

      jsoup: Java HTML parser, built for HTML editing, cleaning, scraping, and XSS safety

      jsoup: Java HTML Parser jsoup is a Java library that simplifies working with real-world HTML and XML. It offers an easy-to-use API for URL fetching, data parsing, extraction, and manipulation using DOM API methods, CSS, and xpath selectors. jsoup implement

      jsoup.org

       

       

      <!-- jsoup -->
      <dependency>
          <groupId>org.jsoup</groupId>
          <artifactId>jsoup</artifactId>
          <version>1.22.1</version>
          <scope>compile</scope>
      </dependency>

       

      // jsoup https://mvnrepository.com/artifact/org.jsoup/jsoup
      implementation("org.jsoup:jsoup:1.22.1")

       

       

      jsoup Maven
      jsoup Maven
      jsoup Gradle
      jsoup Gradle


      뽐뿌게시판

      1. jsoup으로 페이지 HTML 가져오기
      2. CSS 선택자를 이용해 상품 정보가 들어있는 리스트 들을 모두 추출

      반응형

       

       

      import org.jsoup.Jsoup;                  // Jsoup 메인 클래스 (connect, parse 등)
      import org.jsoup.nodes.Document;         // HTML 전체 문서를 표현하는 클래스
      import org.jsoup.nodes.Element;          // 개별 HTML 요소를 표현하는 클래스
      import org.jsoup.select.Elements;        // Element 목록을 표현하는 컬렉션 클래스
      
      /**
       * 뽐뿌 게시판 크롤링
       * Jsoup
       * @since 2026-03-07
       */
      public class PpomppuJsoupCrawler {
      
          public static void main(String[] args) throws Exception {
              // 뽐뿌 게시판 URL
              String url = "https://www.ppomppu.co.kr/zboard/zboard.php?id=ppomppu";
      
              // 1. 페이지 HTML 가져오기
              Document doc = Jsoup.connect(url)
                      // 실제 브라우저가 접속하는 것처럼 위장하여 서버의 차단을 방지 (User-Agent 설정)
                      .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36") 
                      // 서버로부터 데이터를 받아오는 제한 시간(타임아웃)을 10초(10000ms)로 설정
                      .timeout(10000) 
                      // HTTP GET 방식으로 요청을 보냄
                      .get();
              
              // 2. CSS 선택자를 이용해 상품 정보가 들어있는 리스트 들을 모두 추출
              Elements items = doc.select(".baseList");
      
              System.out.println("글 개수: " + items.size());
      
              for ( Element item : items ) {
      
                  // No
                  Element noEl = item.selectFirst(".baseList-numb");
                  String no = noEl != null ? noEl.text().trim() : "";
      
                  // 상품
                  Element nameEl = item.selectFirst(".baseList-box");
                  String name = nameEl != null ? nameEl.text().trim() : "";
      
                  // 링크
                  Element linkEl = item.selectFirst("a");
                  String link = linkEl != null ? linkEl.absUrl("href") : "";
      
                  // 이미지
                  Element imgEl = item.selectFirst("img");
                  String img = imgEl != null ? imgEl.absUrl("src") : "";
                  
                  // 날짜
                  Element timeEl = item.selectFirst(".baseList-time");
                  String time = timeEl != null ? timeEl.text().trim() : "";
      
                  // 조회수
                  Element viewEl = item.selectFirst(".baseList-views");
                  String view = viewEl != null ? viewEl.text().trim() : "";
                  
                  if ( no.isEmpty() ) {
                      // 번호가 없다면 다음
                      continue;
                  } else {
                      // 콘솔 출력
                      System.out.printf("%s%n", no);
                      System.out.printf("상품   : %s%n", name);
                      System.out.printf("날짜   : %s%n", time);
                      System.out.printf("조회   : %s%n", view);
                      System.out.printf("링크   : %s%n", link);
                      System.out.printf("이미지 : %s%n", img);
                  }
      
                  // 상품 간 구분선 출력
                  System.out.println("-".repeat(60));
              }
          }
      }

       

       

      뽐뿌게시판
      뽐뿌게시판
      뽐뿌게시판
      뽐뿌게시판

       

       


      요약

      1. 뽐뿌게시판 https://www.ppomppu.co.kr/zboard/zboard.php?id=ppomppu
      2. 목록 .baseList
      3. No .baseList-numb
      4. 상품 .baseList-box
      5. 링크 a
      6. 이미지 img
      7. 날짜 .baseList-time
      8. 조회수 .baseList-views

      반응형
    Designed by Tistory.