CSS 선택자 활용법
JSoup는 HTML 문서에서 CSS 선택자를 사용해 특정 요소를 쉽게 찾을 수 있도록 도와줍니다. CSS 선택자는 HTML 요소를 태그, 클래스, ID, 속성 등에 따라 유연하게 선택할 수 있어, 웹 페이지에서 원하는 데이터를 빠르고 정확하게 추출하는 데 유용합니다. 이를 통해 리눅스 환경에서도 웹 데이터 스크래핑 작업을 효율적으로 수행할 수 있습니다.
// 기본적인 CSS 선택자 사용 예제
Document doc = Jsoup.connect("http://example.com").get();
Elements paragraphs = doc.select("p"); // 모든 p 태그 선택
for (Element p : paragraphs) {
System.out.println(p.text());
}
위 예제는 페이지 내 모든 <p> 태그를 선택해 텍스트를 출력합니다. CSS 선택자를 사용하여 특정 HTML 태그를 선택함으로써 텍스트 추출을 쉽게 수행할 수 있습니다.
선택자를 사용한 복잡한 요소 찾기
CSS 선택자는 단순한 태그뿐 아니라, 특정 조건에 맞는 복잡한 요소도 찾을 수 있습니다. 예를 들어, 자식 요소를 선택하거나 특정 클래스가 포함된 요소를 선택하는 등 고급 선택자를 활용하면 다단계 구조에서도 정확하게 원하는 데이터를 추출할 수 있습니다.
// 특정 클래스와 자식 요소를 함께 선택하는 예제
Elements complexSelection = doc.select("div.content > ul > li.item");
for (Element item : complexSelection) {
System.out.println("아이템 텍스트: " + item.text());
}
위 코드는 div.content 안에 있는 ul 태그의 자식 요소 중 li.item 클래스에 해당하는 요소를 찾습니다. 이와 같이 계층적인 구조에서도 원하는 요소를 손쉽게 찾아낼 수 있습니다.
ID, 클래스, 속성 선택자 활용 예제
JSoup는 ID, 클래스, 속성 선택자를 통해 특정 조건을 만족하는 요소를 간편하게 찾을 수 있습니다. 예를 들어, #id를 사용해 ID가 일치하는 요소를 선택하거나, .class로 클래스명이 일치하는 요소를 선택할 수 있습니다. 속성 선택자는 특정 속성값이 있는 요소만을 선택할 때 유용하게 사용됩니다.
// ID 선택자 활용 예제
Element header = doc.select("#header").first();
System.out.println("헤더 텍스트: " + header.text());
// 클래스 선택자 활용 예제
Elements items = doc.select(".item-class");
for (Element item : items) {
System.out.println("아이템 텍스트: " + item.text());
}
// 속성 선택자 활용 예제
Elements links = doc.select("a[href]");
for (Element link : links) {
System.out.println("링크 URL: " + link.attr("href"));
}
위 예제는 각각 #header ID, .item-class 클래스, href 속성이 있는 a 태그를 선택하는 코드입니다. 이 방법으로 특정 조건을 충족하는 HTML 요소만을 정확히 골라낼 수 있으며, 웹 크롤링 시 불필요한 데이터를 걸러내고 중요한 정보만 추출하는 데 매우 유용합니다.
참고사이트
'JAVA' 카테고리의 다른 글
[JAVA] JSoup 에러 핸들링과 예외 처리 (0) | 2024.10.29 |
---|---|
[JAVA] JSoup 데이터 전처리와 저장 (1) | 2024.10.28 |
[JAVA] JSoup 데이터 정제 및 변환 (3) | 2024.10.28 |
[JAVA] JSoup HTML 데이터 추출 (0) | 2024.10.28 |
[JAVA] JSoup 기본 사용법 (0) | 2024.10.28 |
[JAVA] JSoup 라이브러리 추가 (Gradle, Maven) (1) | 2024.10.28 |
[JAVA] JSoup 소개 (0) | 2024.10.28 |
[JAVA] byte[] 배열을 string[] 배열로 변환 (0) | 2018.11.14 |