반응형

# Jsoup API 활용 (Jsoup API 활용한 웹 페이지 Crawling(크롤링))

## Jsoup API

  • Java HTML Parser.
  • 사용법이 간단하고 인기 많은 파서. ( 자바에서 html 을 파싱할 수 있도록 도와주는 라이브러리 )
  • HTML 에 포함된 특정 단어를 분리하기 위해 사용하는 자바 라이브러리로 데이터 추출, 가공 등에 효율적. (CSS, DOM 객체 등 핸들링에도 사용, 제이쿼리와 유사한 성질의 API)
  • 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 for working with real-world HTML. It provides a very convenient API for fetching URLs and extracting and manipulating data, using the best of HTML5 DOM methods and CSS selectors. jsoup implements the WHATWG H

jsoup.org

 

Maven Repository: jsoup

jsoup is a Java library for working with real-world HTML. It provides a very convenient API for fetching URLs and extracting and manipulating data, using the best of HTML5 DOM methods and CSS selectors. jsoup implements the WHATWG HTML5 specification, and

mvnrepository.com

## Jsoup 의 주요 요소

  1. Document (Document Object Model) : Jsoup 얻어온 결과 HTML 전체 문서 
  2. Element (=Node) : Document 의 HTML 요소
  3. Elements : Element 가 모인 자료형으로 반복문 사용 가능. (for, while 등)
  4. Connection : Jsoup 의 connect 혹은 설정 메소드들을 이용하여 만들어지는 객체로 연결을 하기 위한 정보를 담고 있다.
  5. Response : Jsoup 가 URL 에 접속해 얻어온 결과로 Document 와 다르게 status 코드, status 메시지, charset 등 헤더 메시지와 쿠키 등을 갖고 있다.

## Jsoup API 이용한 크롤링

  • Jsoup 이용하여 네이버 스포츠 크롤링.
  • 크롬 등 에서 개발자 도구를 이용하여 해당 HTML 의 트리구조 확인. (원하는 부분의 데이터를 가져오기 위해 확인 필요)
  • 구현 로직.
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class Project02_A {
	public static void main(String[] args) {
		
		// 크롤링 할 사이트 주소.
		String url = "https://sports.news.naver.com/wfootball/index.nhn";
		
		Document doc = null;
		
		try {
			doc = Jsoup.connect(url).get();
		} catch (Exception e) {
			System.out.println(e);
		}
		
		// 1. 주요 뉴스로 나오는 태그 찾아서 가져옴.
		Elements element = doc.select("div.home_news");
		
		// 2. 헤더 제목 가져오기.
		String title = element.select("h2").text().substring(0, 4);
		
		System.out.println("====================================");
		System.out.println("헤더 제목 : " + title);
		System.out.println("====================================");
		
		// 3. for문 이용 하위 뉴스 기사들 출력
		for (Element el : element.select("li")) {
			System.out.println(el.text());
		}
		
		System.out.println("====================================");
		
		
	}
}
  • 출력 결과
====================================
헤더 제목 : 추천뉴스
====================================
벤투호 주전 공격수 3인 모두 EPL서 뛰나
토트넘 '폭풍영입'…오히려 위기될 수도?
세계에서 가장 아름다운 축구 선수 "호날두 광팬...첼시 입단이 꿈"
리버풀 마네 대체자 찾았다... 레알서 '커리어 하이' 찍은 공격수
램파드, 콘테 체제 '계륵 MF' 데려간다...토트넘, 320억 가격표 부착
'맨시티는 제2의 도르트문트' 레알, 2024년에 홀란드 영입한다...이적료 2059억
'나이스 원 쏘니' 손흥민, 1017억 원 'LW 세계 3위' 평가!
'이 정도면 복덩이' SON 위상 재확인 "토트넘에 무해할 존재 "
텐 하흐 감독이 가장 원하는 2명, 맨유 유니폼 입나?
맨체스터 지역지 '홀란드, 펩 과르디올라의 새로운 메시 될 것'
사생활 지적에 네이마르 "쉴 땐 쉬어야지" 하소연
나폴리·세비야 같은 명가들, 왜 ‘괴물 수비수’ 원할까
재계약 다섯 달 만에 '충격'…바르사 '계약해지' 초강수
'붉은색+푸른색' 심장 가진 '런던의 사나이', 새로운 도전에 나선다
'연봉 336억 끝내 불발…' 지단, PSG 안 간다 (佛 RMC)
레알, 이적료 2035억으로 홀란드 뺏어온다
'WC 끝으로 대표팀 은퇴?' 네이마르, 동료에게 말했다
'포그바-린가드?' 맨유 신입 CEO의 저격, "라커룸 밀고자 2명 팀 떠났다"
베일·아자르에 가렸던 '먹튀'... 결국 레알 떠나 '2번째 임대'
메시, 음바페에 이어 세 번째…파리 생제르맹 '골든보이 출신' MF 영입
====================================

 

반응형

+ Recent posts