๐ป์น ํฌ๋กค๋ง, ์น ์คํฌ๋ํ
์น ์ฌ์ดํธ(์น ํ์ด์ง)์์ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ํ์๋ฅผ ์๋ฏธํ๋ค.
๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ๋ฐฉ๋ฒ์ ์๋ 3๊ฐ์ง ๋ฐฉ๋ฒ์ด ๋ํ์ ์ด๋ค.
1. ์๋๋ฐฉ(์น์ฌ์ดํธ)์ด ๋์๊ฒ DB ๊ถํ๋ ์ฃผ๋ ๋ฐฉ๋ฒ, ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ด์ง๋ง ํ์ค์ ๋ถ๊ฐ๋ฅํ๋ค.
2. ์๋๋ฐฉ์ด ์ธ๋ถ์ OpenAPI๋ฅผ JSON, XML ํ์์ผ๋ก ๊ณต๊ฐํ๋ค. ํ์ง๋ง ๊ณต๊ฐ๋ ๋ฐ์ดํฐ๊ฐ ์ ํ์ ์ผ ์ ์๋ค.
3. ์นํ์ด์ง์ ์์ค๋ฅผ ๊ธ์ด์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ค. ๋จ, ํ๋ก๊ทธ๋จ์ ์ด์ฉํด์ผ ์ป์ ์ ์๋ค๋ ๋จ์ ์ด ์๋ค.
ํฌ๋กค๋ง ์ ์ฃผ์์
1. ํ๊ฐ๋ฅผ ๋ฐ์ง์์ ๋ฐ์ดํฐ์ด๋ฏ๋ก ์ ์๊ถ ๋ฌธ์ ๋ฅผ ์กฐ์ฌํด์ผํ๋ค.
2. ๊ธ์ด์ค๋ ์์ ์ ์๋๊ฐ ๋น ๋ฅด๊ณ , ํ์๊ฐ ๋ง์์ ํฌ๋กค๋ง ๋๋ ์๋ฒ ์ ์ฅ์์๋ ์๋ฒ ๋น์ฉ๊ณผ ํธ๋ํฝ์ด ์ฆ๊ฐ๋๋ค. ๊ทธ๋์ ์ ๋๊ป ๊ฐ์ ธ์จ๋ค.
ํฌ๋กค๋ง ์ฌ์ ์ง์
HTML๊ณผ CSS ์ ํ์, JavaScript, Java๋ฅผ ์ดํดํด์ผํ๋ค.
๐ปJsoup ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ๋ธ๋ผ์ฐ์ ์ฒ๋ผ ์ฌ์ดํธ์ ์ ์ํ์ฌ ๊ทธ ํ์ด์ง์ ์์ค๋ฅผ ์ฝ๊ณ ๋ถ์, ํ์ํ์ฌ ์ํ๋ ๋ถ๋ถ์ ์ถ์ถํ๋ค.
- HTML ์์ค๋ฅผ ๋ค๋ฃจ๊ธฐ์ JavaScript ์กฐ์๊ณผ ๋น์ทํ๋ค.
- JavaScript์ DOM์ ์กฐ์ํ๋ ๋ถ์๊ธฐ์ด๋ค.
- ์์ค๋ฅผ ๊ธ์ด์ ๋ฌธ์์ด๋ก ๋ฆฌํดํ๋ค.
๋ค์ด๋ก๋
์๋ ์ฌ์ดํธ์ ์ ์ํ๋ค.
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
Download
์ต์ ๋ฒ์ ์ ๋ค์ด๋ก๋ ๋ฐ๋๋ค.
ํ๋ก์ ํธ ์ฐธ์กฐํ๊ธฐ
webapp > WEB-INF > lib ํด๋์ ๋ฃ๊ธฐ
์์
package com.test.java;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Ex01 {
public static void main(String[] args) {
try {
//์ ์ํด์ ์ฝ์ด์จ ํ์ด์ง ์์ค๋ฅผ ๊ด๋ฆฌํ๋ ๋ฌธ์ ๊ฐ์ฒด
Document doc = Jsoup.connect("http://localhost:8090/memo/list.do").get();
//System.out.println(doc.html());
//selectFirst : ์์ ํ๋๋ง ์ฐพ์ ๋
Element h1 = doc.selectFirst("body > h1");
System.out.println(h1.text());
//select : ๋ณต์ํ์ผ๋ก ๋ฆฌํด
Elements item = doc.select(".item > div:nth-child(2)");
for (Element ele :item) {
System.out.println(ele.text());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
์ฃผ์ ๊ธฐ๋ฅ๊ณผ ํน์ง
1. HTML ํ์ฑ
Jsoup์ HTML ๋ฌธ์๋ฅผ ํ์ฑํ์ฌ DOM(Document Object Model)์ผ๋ก ๋ณํํ๋ค.
Document doc = Jsoup.connect("http://localhost:8090/memo/list.do").get();
System.out.println(doc.html());
2. CSS ์ ํ์ ์ง์
Jsoup์ CSS ์ ํ์๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ ์์๋ฅผ ์ ํํ ์ ์๋ค.
Element h1 = doc.selectFirst("body > h1");
Elements item = doc.select(".item > div:nth-child(2)");
jsoup ์ด ์๋๋ ๊ฒฝ์ฐ
1. ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ์ง ๋ชปํ๊ธฐ๋๋ฌธ์ ์นํ์ด์ง ์๋ฐ์คํฌ๋ฆฝํธ์ ์ด๋ฒคํธ๋ก ๊ฐ์ด ๋ค์ด๊ฐ๋ค๋ฉด ํฌ๋กค๋งํ ์ ์๋ค.
2. ์ธ์ฆ์ ๋ฐ์์ผํ๋ ํ์ด์ง
๋ก๊ทธ์ธ ํ ์ ๋ณด ๋ฑ ์ธ์ฆ์ ๋ฐ์์ผ ๋ณผ ์ ์๋ ํ์ด์ง๋ ํฌ๋กค๋งํ ์ ์๋ค.
'WEB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[WEB] REST API๋ (0) | 2023.11.30 |
---|---|
[WEB] ์๋ฐ ์น ํ๋ก์ ํธ์ ํ๋น์ฝ ์ค์ ํ๊ธฐ (1) | 2023.10.30 |
[Web] Emmet, Zen-coding / lorem(๋ก๋ ) (0) | 2023.09.25 |
[HTML&CSS] table ๊ตฌ์กฐ (0) | 2023.09.25 |
๋ด ์ปดํจํฐ IP์ฃผ์ ํ์ธ (0) | 2023.09.20 |