본문 바로가기
프로그래밍/Java

[Java] Jsoup를 이용한 웹 크롤링

by so5663 2023. 6. 15.

 

회사에서 해당 링크에서 이미지를 가져와서 뿌려줄 업무가 있어서 간단하게 정리했습니다.

자세한 내용은 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 "";
    }