-
Java G마켓 베스트 크롤링 HtmlUnit 샘플개발 2026. 3. 5. 14:15
목차

Java G마켓 베스트셀러 크롤링 HtmlUnit 샘플
G마켓 베스트 페이지는 동적 HTML이라서 Jsoup으로 긁어 올 수가 없습니다.
대안으로 HtmlUnit을 이용해서 크롤링이 가능합니다.
HtmlUnit은 자바스크립트로 동적으로 생성되는 콘텐츠를 긁어와야 할 때 사용합니다.
URL에서 HTML을 가져오고 베스트 리스트 아이템들을 선택한 뒤 상품명과 가격과 링크 등을 출력합니다.
HtmlUnit
Jsoup이 단순히 HTML 문서를 정적으로 읽습니다
HtmlUnit은 화면 없는 브라우저에 가깝습니다.
내부적으로 JavaScript 엔진을 탑재하고 있어 웹 페이지 내의 스크립트를 실행합니다.HtmlUnit – Welcome to HtmlUnit
HtmlUnit 💗 Sponsoring 💗 Constantly updating and maintaining the HtmlUnit code base already takes a lot of time. I would like to make 2 major extensions in the next few months For doing this I need your Sponsoring. HtmlUnit is a "GUI-Less browser fo
www.htmlunit.org
특징 JavaScript 지원 AJAX, jQuery 등 동적인 콘텐츠가 포함된 페이지를 렌더링할 수 있습니다. 브라우저 시뮬레이션 Chrome , Firefox , Edge 등 특정 브라우저인 것처럼 헤더 정보를 설정하여 동작할 수 있습니다. 비가시성 ( Headless ) 화면에 브라우저 창이 뜨지 않으므로 서버 환경에서 가볍고 빠르게 동작합니다. 웹 자동화 로그인 프로세스 , 검색어 입력 , 페이지 이동 등의 복잡한 워크플로우를 자동화하기에 적합합니다. 항목 Jsoup HtmlUnit 성격 HTML 파서 ( Parser ) Headless 웹 브라우저 JavaScript 실행 불가능 ( 정적 텍스트만 가능합니다. ) 가능 ( JS 엔진 내장 ) 속도 매우 빠릅니다. 상대적으로 느립니다. 난이도 매우 쉬움 ( CSS 선택자 사용합니다. ) 보통 ( 브라우저 제어 로직 필요합니다. ) 용도 단순 정보 크롤링 웹 자동화 , 동적 페이지 스크래핑 <!-- HtmlUnit --> <dependency> <groupId>org.htmlunit</groupId> <artifactId>htmlunit</artifactId> <version>4.21.0</version> </dependency>// HtmlUnit https://mvnrepository.com/artifact/org.htmlunit/htmlunit implementation("org.htmlunit:htmlunit:4.21.0")
HtmlUnit 반응형
G마켓 베스트
1. htmlUnit으로 URL에 접속해서 HTML 문서를 가져옵니다.
2. 베스트 상품들이 들어 있는 li 요소 목록 선택합니다.
3. 각 상품 li 요소를 순회하면서 정보 추출합니다.import org.htmlunit.BrowserVersion; // 브라우저 버전(Chrome, Firefox 등) 설정용 import org.htmlunit.WebClient; // HtmlUnit 웹 클라이언트 (핵심 클래스) import org.htmlunit.html.DomElement; // DOM 요소 타입 (HtmlElement의 상위 클래스) import org.htmlunit.html.DomNode; import org.htmlunit.html.DomNodeList; // 노드 리스트 반환 타입 import org.htmlunit.html.HtmlPage; // 로드된 HTML 페이지 표현 /** * G마켓 베스트 페이지 크롤링 * HtmlUnit * @since 2026-03-05 */ public class GmarketBestHtmlUnit { /** * 해당 URL에서 HTML을 가져오고 * 베스트셀러 리스트 아이템들을 선택한 뒤 * 상품명, 가격, 링크, 이미지 URL을 출력 * */ public static void main(String[] args) { // G마켓 베스트 페이지 URL String url = "https://www.gmarket.co.kr/n/best"; // WebClient를 try-with-resources로 생성 ( 자동 close ) try ( WebClient webClient = new WebClient(BrowserVersion.CHROME) ) { // CSS/JS 비활성화 ( 성능 향상 및 오류 방지 ) webClient.getOptions().setCssEnabled(false); webClient.getOptions().setJavaScriptEnabled(false); // HTTPS 인증 문제 회피 webClient.getOptions().setUseInsecureSSL(true); // 타임아웃 설정 (필요시) webClient.getOptions().setTimeout(100000); // 페이지 로드 HtmlPage page = webClient.getPage(url); // 디버깅용 전체 HTML 출력 ( 필요시 주석 해제 ) // System.out.println(page.asXml()); // G마켓 베스트 상품 li 목록 선택 ( CSS selector ) DomNodeList<DomNode> items = page.querySelectorAll("ul.list__best > li"); System.out.println("상품 개수: " + items.size()); // 순위 카운터 초기값 설정 int rank = 1; // 각 상품 순회 for ( DomNode item : items ) { // 5위까지만 출력 후 반복 종료 ( 테스트용 제한 ) if ( rank - 1 == 5 ) break; // 상품명 DomElement titleEl = item.querySelector(".box__item-title"); String name = titleEl != null ? titleEl.asNormalizedText() : ""; // 원가 DomElement originalEl = item.querySelector(".box__price-original > .text__value"); String original = originalEl != null ? originalEl.asNormalizedText() : ""; // 가격 DomElement priceEl = item.querySelector(".box__price-seller > .text__value"); String price = priceEl != null ? priceEl.asNormalizedText() : ""; // 링크 DomElement linkEl = item.querySelector("a"); String link = linkEl != null ? linkEl.getAttribute("href") : ""; // 이미지 DomElement imgEl = item.querySelector("img"); String img = imgEl != null ? imgEl.getAttribute("src") : ""; // 결과 출력 System.out.printf("[%2d위] %n", rank); System.out.printf("상품명 : %s%n", name); System.out.printf("원가 : %s원%n", original); System.out.printf("가격 : %s원%n", price); System.out.printf("링크 : %s%n", link); System.out.printf("이미지 : https:%s%n", img); // 상품 간 구분선 출력 System.out.println("-".repeat(60)); // 다음 상품으로 순위 증가 rank++; } } catch ( Exception e ) { e.printStackTrace(); } } }
G마켓 베스트 
G마켓 베스트
요약
1. htmlunit implementation("org.htmlunit:htmlunit:4.21.0")
2. G마켓 베스트 https://www.gmarket.co.kr/n/best
3. 목록 ul.list__best > li
4. 상품 .box__item-title
5. 원가 .box__price-original > .text__value
6. 가격 .box__price-seller > .text__value
7. 링크 a.getAttribute("href")
8. 이미지 img.getAttribute("src")반응형'개발' 카테고리의 다른 글
Java 뽐뿌 뽐뿌게시판 크롤링 Jsoup 샘플 (0) 2026.03.07 Java 옥션 베스트 크롤링 Selenium 샘플 (0) 2026.03.06 Java 11번가 베스트셀러 크롤링 Jsoup 샘플 (0) 2026.03.04 Java 이클립스 Gradle 프로젝트 설정 방법 (0) 2026.03.04 Java Http 요청 HttpURLConnection HttpClient OkHttp 텔레그램 사용 샘플 (0) 2026.03.03