프로그래밍/Java
[Java] Jsoup를 이용한 웹 크롤링
soso-shs
2023. 6. 15. 13:33
회사에서 해당 링크에서 이미지를 가져와서 뿌려줄 업무가 있어서 간단하게 정리했습니다.
자세한 내용은 https://jsoup.org/
참조하시면 상세히 설명이 되어있습니다.
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
예시
selectFirst() 메소스 활용
String literatureNumber = "abcdegf";
String url = "http://abpat.kipris.or.kr/abpat/remoteFile.do?method=bigFrontDraw&publ_key=US," + literatureNumber +"&cntry=US";
try {
// URL에서 HTML 가져오기
Document doc = Jsoup.connect(url).get();
} catch (IOException e) {
e.printStackTrace();
}
// 이미지 태그(ID: image_src) 가져오기
Element imageTag = doc.selectFirst("img#image_src");
if (imageTag != null) {
String imageUrl = "http://abpat.kipris.or.kr/" + imageTag.attr("src");
logger.info("Image URL: " + imageUrl);
model.addAttribute("imageUrl", imageUrl);
} else {
System.out.println("Image tag not found.");
}
getElementsByTagName() 활용
public static String getHtmlImageTagUrl(String url) {
try {
// URL에서 XML 또는 HTML 가져오기
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new URL(url).openStream());
// 이미지 태그(ID: image_src) 가져오기
NodeList imageTags = doc.getElementsByTagName("img"); // NodeList로 변환
for (int i = 0; i < imageTags.getLength(); i++) {
Element imageTag = (Element) imageTags.item(i);
String id = imageTag.getAttribute("id");
if (id.equals("image_src")) { // 태그 아이디 image_src랑 같으면 실행
String imageUrl = imageTag.getAttribute("src");
logger.info("Image URL: " + imageUrl);
return imageUrl;
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return "";
}