728x90
반응형
Jsoup이란 html 문서로 저장된 데이터를 Parsing해주는 오픈 소스 라이브러리입니다.
jsoup 공식 문서 보기
다운로드
build.gradle에 넣어주기만 해도 build가 됩니다.
Jsoup 자바로 구현해보기
우선, img src를 인식하는지 간단히 테스트해보겠습니다.
import org.junit.jupiter.api.Test;
public class HtmlParseTest {
@Test
public void parse_test1() {
boolean isImg = html.contains("img src");
if (isImg) {
System.out.println("사진있음");
// 파싱 시작
} else {
System.out.println("사진없음");
result = "a.png";
}
}
}
그 다음은 indexOf로 img가 몇 번째 index인지 검사해보겠습니다.
import org.junit.jupiter.api.Test;
public class HtmlParseTest {
@Test
public void parse_test1() {
// given
String result = "";
String html = "<p>1</p><p><img src=\"data:image/png;base64,iVBORwGKG\"></p>";
// when
int site = html.indexOf("img");
System.out.println(site);
// then
}
}
indexOf와 substring으로 열심히 파싱해본 결과...
import org.junit.jupiter.api.Test;
public class HtmlParseTest {
@Test
public void parse_test1() {
// given
String result = "";
String html = "<p>1</p><p><img src=\"data:image/png;base64,iVBORwGKG\"></p>";
// when
int b1 = html.indexOf("img");
System.out.println(b1);
String s1 = html.substring(b1);
System.out.println(s1);
int b2 = s1.indexOf("src");
String s2 = s1.substring(b2);
System.out.println(s2);
int b3 = s2.indexOf("\"");
int b4 = s2.lastIndexOf("\"");
System.out.println(b3);
System.out.println(b4);
result = s2.substring(b3 + 1, b4);
System.out.println(result);
// then
}
}
이렇게, src url까지 파싱할 수 있었습니다.
그리고 보기 깔끔하게 Method로 정리하면,
import org.junit.jupiter.api.Test;
public class HtmlParseTest {
@Test
public void parse_test1(){
String html = "<p>1</p><p><img src=\"data:image/png;base64,iVBORw0KG\"></p>";
String tag = parseEL(html, "img");
System.out.println(tag);
String attr = parseAttr(tag, "src");
System.out.println(attr);
}
private String parseEL(String html, String tag){
String s1 = html.substring(html.indexOf(tag)-1);
return s1.substring(0, s1.indexOf(">")+1);
}
private String parseAttr(String el, String attr){
String s1 = el.substring(el.indexOf(attr));
int begin = s1.indexOf("\"");
int end = s1.lastIndexOf("\"");
return s1.substring(begin+1, end);
}
}
각각의 책임을 가진 Method로 분리해서 Jsoup을 java로 맛보기로 구현해볼 수 있었습니다.
결론 : 그냥 Jsoup 씁시다.
728x90
반응형
'Skills > Spring' 카테고리의 다른 글
Spring boot 3.0 + S3 서비스 적용 By Spring Cloud for AWS (1) | 2023.06.06 |
---|---|
스프링부트 테스트 시, JPA와 SQL INIT 충돌 이슈 (0) | 2023.04.30 |
스프링 Parsing 방법(x-www-form-urlencoded, json) (0) | 2023.02.08 |