사용자가 원하는 링크 공유 시 다음과 같이 해당 사이트의 썸네일이나 사이트명에 대해서 크롤링하는 방법이다.
Jsoup 은 실제 HTML 작업을 위한 Java 라이브러리입니다. HTML5 DOM 메서드와 CSS 선택기를 사용하여 URL을 가져오고 데이터를 추출하고 조작하기 위한 매우 편리한 API를 제공합니다.
- URL, 파일 또는 문자열에서 HTML을 긁고 구문 분석
- DOM 순회 또는 CSS 선택기를 사용하여 데이터 찾기 및 추출
- HTML 요소, 속성 및 텍스트 조작
- XSS 공격 을 방지하기 위해 수신 허용 목록에 대해 사용자 제출 콘텐츠 정리
- 깔끔한 HTML 출력
https://jsoup.org/download |
그래들에 1.13.1버전으로 설정했다.
implementation 'org.jsoup:jsoup:1.13.1'
Document doc = null;
String url = request.getParameter("url"); // 적용할 사이트 url
try {
doc = Jsoup.connect(java.net.URLDecoder.decode(url,"utf-8")).header("User-Agent" , "Mozilla/5.0").get();
} catch (IOException e) {
log.error(e.getMessage(), e);
}
// 제목
String title = doc.select("meta[property=og:title]").attr("content");
// 내용
String description = doc.select("meta[property=og:description]").attr("content");
// 이미지
String image = doc.select("meta[property=og:image]").attr("content");
Jsoup 라이브러리로 해당 웹사이트의 데이터를 추출한 부분을 디버깅해보니 아래와 같은 데이터를 추출할 수 있다.
<!doctype html> <html lang="ko" data-dark="false"> <head> <meta charset="utf-8"> <title>NAVER</title> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=1190"> <meta name="apple-mobile-web-app-title" content="NAVER"> <meta name="robots" content="index,nofollow"> <meta name="description" content="네이버 메인에서 다양한 정보와 유용한 컨텐츠를 만나 보세요"> <meta property="og:title" content="네이버"> <meta property="og:url" content="https://www.naver.com/"> <meta property="og:image" content="https://s.pstatic.net/static/www/mobile/edit/2016/0705/mobile_212852414260.png"> <meta property="og:description" content="네이버 메인에서 다양한 정보와 유용한 컨텐츠를 만나 보세요"> ... |
Jsoup 라이브러리를 이용하여 원하는 사이트의 썸네일이나 사이트명 같은 데이터를 쉽게 크롤링할 수 있다.
'Java' 카테고리의 다른 글
[Java] window에서 자바 아카이브(JAR)로 압축하기 (0) | 2021.11.24 |
---|---|
[JAVA] 가변매개변수(매개변수 동적 사용/오버로딩 X) (0) | 2021.10.26 |
[JAVA] 태그를 제거하는 정규표현식 (0) | 2021.08.06 |
[Java] Emoji 문자 제거 (2) | 2021.07.19 |
[Java] Log4j Level 설정(로그 올바른 사용법) (3) | 2021.07.01 |