[JSOUP]
- HTML 문서에 포함된 데이터를 분석 추출하는 JAVA 오픈소스 라이브러리
- 정적 페이지를 크롤링 하는데 주로 사용된다.
- 크롤링(Crawling)
HTML 페이지를 가져와서 필요한 데이터를 추출하는 작업을 의미
[사용예제]
- 라이브러리 추가
https://mvnrepository.com/artifact/org.jsoup/jsoup
- Maven, Gradle과 같은 빌드 도구를 사용하여 의존성을 추가하거나
jar를 다운받아 클래스패스에 추가한다.
- 소스
import java.io.IOException;
import java.util.List;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupTest {
public static void main(String[] args) {
// [Test URL] : SBS News
String URL = "https://news.sbs.co.kr/news/newsflash.do?plink=SNB&cooper";
// [Document] : Jsoup으로 가져온 HTML을 담을 객체
Document doc = null;
try {
// URL에 해당하는 HTML 전체 문서 가져오기
doc = Jsoup.connect(URL).get();
} catch(IOException e) {
e.printStackTrace();
}
// 출력 변수 선언
String title;
String content;
String date;
String writer;
// [Element] : Document의 HTML 요소
// [Elements] : Element가 모인 자료형
// 특정 값 추출 : css 선택문법을 이용, 태그를 검색하여 데이터를 가져온다.
List<Element> elements = doc.select(".w_news_list ul > li");
// 결과 값 출력
for(Element element : elements) {
title = "^title : " + element.getElementsByClass("sub").text();
content = "^content : " + element.getElementsByClass("read").text();
date = "^date : " + element.getElementsByClass("date").text();
writer = "^writer : " + element.getElementsByClass("name").text();
System.out.print(title + "\n" + content + "\n" + date + "\n" + writer + "\n");
System.out.println("-------------------------------------------------");
}
}
}
- 결과
[참고]
- 동적 페이지는 크롤링 되지 않는다. (파싱 전 HTML 소스를 가져옴)
- 동적 페이지를 크롤링하는 방법에는 셀레니움(Selenium)이 있다.
[출처]