[웹 크롤링]
■ 샘플 데이터를 웹 페이지로부터 "추출"하고 ===> 스크랩핑
□ HTML 코드가 스크랩핑의 대상.
* html은 웹 페이지를 코딩하는 언어로, 한 쌍의 <> 태그로 이루어져있다. (MarkUp Language)
■ 이 데이터들을 나의 프로젝트에 알맞은 형태로 "가공"할 수 있다. ==> 크롤링
■ Jsoup : 자바에서 크롤링을 목적으로 웹에 접근할 때 가장 많이 사용되는 클래스 객체
- 자바에서 자동 제공되는 라이브러리가 아니므로 다운 받아 사용
Download and install jsoup
Download and install jsoup jsoup is available as a downloadable .jar java library. The current release version is 1.18.3. What's new See the 1.18.3 release announcement for the latest changes, or the changelog for the full history. Previous releases of jso
jsoup.org
// 클래스 설정
프로젝트 오른쪽 -> build path -> libraies -> classpath에 넣어줌
package class01;
import java.io.IOException;
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.coffeebeankorea.com/menu/list.asp?category=13";
// 링크가 바뀔 일이 없으므로 상수화
Document doc = null;
try {
doc = Jsoup.connect(URL).get();// 웹 페이지 정보를 넣을 변수
// 타겟 웹페이지로부터 문서 받아오기
} catch (IOException e) {
e.printStackTrace();
}
// 웹 페이지 정보를 url로부터 받아오기
// 자바에서 크롤링을 목적으로 웹에 접근할 때 가장 많이 사용되는 클래스 객체 : Jsoup
// 자바에서 자동으로 제공되는 라이브러리가 아니어서 Jsoup 그냥 사용은 불가. 다운 받아야 함
Elements elems = doc.select("span.kor");
// f12를 눌렀을 때 보이는 html 문서로부터 받아온 span 태그를 선택할테니 요소에 넣어줘 라는 뜻
for(Element elem : elems) {
String str = elem.text();
System.out.println(str);
}
}
}
웹 크롤링을 통해서 음료 목록을 가져오는 코드. 웹 페이지(HTML)에서 특정 요소를 찾아 데이터를 추출한다.
final String URL = "https://www.coffeebeankorea.com/menu/list.asp?category=13";
// 링크가 바뀔 일이 없으므로 상수화
크롤링할 웹 사이트 주소를 먼저 작성해준다. 링크는 바뀔 일이 없으므로 final을 통해 상수화해준다.
Document doc = null;
■ Document : Jsoup 라이브러리에서 제공하는 자료형(클래스 타입). 웹 페이지의 HTML 문서를 저장하고 다룰 수 있다.
+) 기본 자료형은 단순 값 저장, 참조 자료형은 객체를 생성하고 사용
Document 는 HTML 문서를 저장하는 변수이다. 웹 페이지의 HTML 데이터를 변수 doc에 저장할 것이다.
우선은 doc라는 변수를 null로 초기화 해준다.
(사실 여기서는 try-catch scope 문제로 try-catch 밖에 따로 선언해준 것)
"Jsoup - Document"
try {
doc = Jsoup.connect(URL).get();
} catch (IOException e) {
e.printStackTrace();
}
웹 사이트에 접속해서 HTML 문서를 가져온다음 dco에 저장하는 코드.
===> URL에 접속해서 해당 웹페이지의 HTML 데이터를 Document 객체로 가져오는 역할
■ Jsoup.connect() : URL에 해당하는 웹페이지에 접속하는 메서드. 웹 사이트에 요청만 보내는거고, 데이터를 가져오는 건 아님.
■ .get() : HTML 문서를 가져와서 Document 객체로 반환함.
Document 객체는 이때 데이터를 받아오면 생성되며 (doc) 만약, 데이터를 받아오지 못하면 null 상태로 남게 된다.
□ 웹 사이트 접속에 실패할 경우가 있기 때문에, try-catch를 사용해서 예외 처리를 해준다. (웹 사이트에서 데이터를 가져올 때 네트워크 문제가 생길 수도 있음)
Elements elems = doc.select("span.kor");
// f12를 눌렀을 때 보이는 html 문서로부터 받아온 span 태그를 선택할테니 요소에 넣어줘 라는 뜻
■ Elements : 여러 개의 HTML 요소를 담을 수 있는 리스트 역할
■ select("CSS 선택자") : HTML에서 원하는 태그만 가져옴
가져온 html 문서 doc에서 <span class="kor"> 태그만 찾아서 elems 라는 변수에 저장
for(Element elem : elems) {
String str = elem.text();
System.out.println(str);
}
foreach문을 통해서 메뉴들을 출력해준다.
■ text() : 선택한 HTML 요소의 텍스트 내용을 가져오는 메서드 (ONLY 텍스트만 가져옴. 태그 전부 제외)
[크롤링 과정]
1. 타겟 웹 페이지를 정해서 URL로 작성해준다.
2. Document를 자료형으로 하는 변수를 하나 생성하고 Jsoup.connect(URL).get()으로 웹 페이지에서 데이터를 가져온다.
3. 가져온 데이터에서 select()로 원하는 태그의 요소만 골라준다.
4. 반복문으로 가져온 데이터들을 출력해준다.
'IT > JAVA' 카테고리의 다른 글
자바 복습 (0) | 2025.02.11 |
---|---|
크롤링 + MVC 패턴 (0) | 2025.02.10 |
MVC 패턴 복습 2 (0) | 2025.02.09 |
MVC 패턴 - Model 분석 (0) | 2025.02.08 |
MVC 패턴 - Controller 분석 (0) | 2025.02.07 |