헬린코린이

Jsoup 본문

Programming/크롤링

Jsoup

HCD 2022. 12. 15. 16:13

자바의 크롤러 종류에는

Jsoup , Crawler4 j, Apache Nutch, StormCrawler, 이외에도 여러 가지 종류가 있지만

저는 Jsoup에 대해 알아보겠습니다.

 

우선 크롤링이란 HTML을 가져와서 데이터를 추출하는 행위입니다.

 

Jsoup 크롤러란

자바의 HTML Parser 이며 URL을 가져와서 HTML을 조작하여 데이터를 추출합니다.

HTML5 DOM 메서드와 CSS셀렉터를 사용합니다.

Jsoup는 WHATWG HTML5스펙을 구현합니다.

 

Jsoup은 우리가 사용하는 즉 자바에서 기본으로 제공해주는 라이브러리가 아니기 때문에

Jsoup라이브러리를 다운로드하아야 합니다.

 

 

package client;

import java.io.IOException;
import java.util.Iterator;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class Test01 {
	public static void main(String[] args) {
		
		final String url="https://www.melon.com/chart/index.htm";
		// 타겟 사이트
		// 웹 브라우저는 크롬
		
		// <!DOCTYPE html>
		// 아~~ 웹 페이지
		// 웹 문서 한개의 화면이 == 한개의 웹 페이지 == 1개의 다큐먼트
		Document doc=null;
		try {
			doc =Jsoup.connect(url).get();
		} catch (IOException e) {
			e.printStackTrace();
		} 
		System.out.println(doc);	
}

 

Jsoup라이브러리를 가지고 와서 추가하고  이렇게만 입력하고 출력하면

멜론 차트 페이지의 HTML이 출력될 것이다.

하지만 우리는 HTML이 보고 싶은 게 아니라 페이지의 문자들을 크롤링하고 싶은 거라

여기에 더 추가해줘야 한다.

	
Elements eles1=doc.select("#lst50 > td:nth-child(2) > div > span.rank");
Elements eles=doc.select("#lst50 > td:nth-child(6) > div > div > div.ellipsis.rank01 > span > a");
Iterator<Element> itr = eles.iterator();
Iterator<Element> itr1 = eles1.iterator();
while(itr.hasNext() && itr1.hasNext()) {
	//System.out.println(itr.next());
	String str = itr.next().text();
	String str1 = itr1.next().text();
			
	System.out.println(str1+" - "+str);

select로 크롤링하고 싶은 곳을 가지고 와서 이터레이터에 복사하고

그걸 while문으로 돌려서 하나씩 next()로 출력한다.

이때 꼭. text()를 붙여줘야 원하는 결괏값을 얻을 것이다.

Comments