웹 크롤링

웹 크롤링 - Jsoup

record2080 2025. 3. 11. 19:42

<웹 크롤링>

: 스크래핑 +크롤링

샘플 데이터를 웹 페이지로부터 "추출"하고 (스크랩핑)

추출한 데이터들을 내 프로젝트에 알맞은 형태로 "가공" 하는 것(크롤링)

 

▶타겟 웹 페이지 

: 어떤 웹페이지로부터 데이터를 받아올 것인지 결정 (타겟팅)

예) 타겟웹페이지의 URL저장

https://comic.naver.com/index

 

네이버 웹툰

매일매일 새로운 재미, 네이버 웹툰.

comic.naver.com

참고 ) 만약 자바에 스윙(swing) 이 있다면 옛날버전

            Documnet doc = 웹 페이지 정보를 URL로부터 받아온 정보

 

▶  Jsoup 

: 웹을 갖고 오는 클래스 (자바가 안 갖고 있음)


다운받을 떄 주의 ) jar. 자바라이브러리 자바코드묶음
빌드패스에서 라이브러리 외부에서 추가

 

▶ HTML : 웹 페이지를 코딩하는 언어한쌍의 <> 태그로 이뤄져 있음

 

◆ span. 클래스이름

span. DailyList_title_epGnT

<span class=DailyList_title--ep>광마회귀 </span>

. : 클래스 속성명 

# : 아이디 속성명

 

내가 필요한 정보만 가져오고 싶을 때

클래스 이름을 추가

"span.kor"

String str=elem.text(); 

메뉴만 뽑기 가능

=============================================

package crawling;

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

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

import model.CoffeeDTO;

public class Crawling {
	public static ArrayList<CoffeeDTO> makeSample() { 
		final String URL="https://www.coffeebeankorea.com/menu/list.asp?category=13";

		Document doc=null;
		try {
			doc=Jsoup.connect(URL).get();
		} catch (IOException e) {
			e.printStackTrace();
		}

		ArrayList<CoffeeDTO> datas=new ArrayList<>();
		int NUM=1001;

		Elements elems=doc.select("span.kor");
		Iterator<Element> itr=elems.iterator();
		Elements elems2=doc.select("dd");
		Iterator<Element> itr2=elems2.iterator();
		while(itr.hasNext()) {
			String name=itr.next().text();
			///System.out.println(name);
			
			String detail=itr2.next().text();
			///System.out.println(detail);
			itr2.next(); // 열량
			itr2.next(); // 나트륨
			itr2.next(); // 탄수화물
			itr2.next(); // 당
			itr2.next(); // 단백질
			itr2.next(); // 카페인
			itr2.next(); // 포화지방
			
			///System.out.println();

			CoffeeDTO data=new CoffeeDTO();
			data.setNum(NUM++);
			data.setName(name);
			data.setDetail(detail);
			datas.add(data);
		}

		for(CoffeeDTO coffee:datas) {
			System.out.println(coffee);
		}
		
		return datas;
	}
}