관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[자바(java)] Jsoup 크롤링 사용 (feat. Spring Boot , Android Weekly article) 본문

자바(java)

[자바(java)] Jsoup 크롤링 사용 (feat. Spring Boot , Android Weekly article)

막무가내막내 2020. 6. 29. 13:52
728x90

 

https://youngest-programming.tistory.com/302

 

[코틀린] Jsoup 파싱 라이브러리 사용 기록

https://jsoup.org/ jsoup Java HTML Parser, with the best of HTML5 DOM methods and CSS selectors. jsoup: Java HTML Parser jsoup is a Java library for working with real-world HTML. It provides a very..

youngest-programming.tistory.com

저번 크롤링에 이은 또 한번의 Jsoup 사용기록을 남깁니다. ㅎㅎ

 

 

 

먼저 크롤링 할 IT 기사 사이트입니다.

https://androidweekly.net/

 

Android Weekly - Free weekly Android & Kotlin development newsletter

Android Weekly is a free newsletter that helps you to stay cutting-edge with your Android Development.

androidweekly.net

 

태그인데

각각 빨간색과 형광펜으로는 불러올 것들을 표시,

파랑색표시는 이것을 사용해서 불러오는데 이용할 것 들 입니다.

 

 

 

[코드는 다음과 같습니다.]

package com.mtjin.itarticle.controller;

import lombok.AllArgsConstructor;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

import java.io.IOException;

@Controller
@AllArgsConstructor
public class CrawlingTestController {
    @GetMapping(value = "/crawling")
    public String goRegister() throws IOException {
        Document doc = Jsoup.connect("https://androidweekly.net/").get();
        Elements infoList = doc.select("div[class=sections]").select("a[class=article-headline]");
        Elements contentList = doc.select("span.main-url + p");
        for (int i = 0; i < infoList.size(); i++) {
            //제목
            System.out.println(infoList.get(i).text());
            //링크
            System.out.println(infoList.get(i).attr("href"));
            //이미지 url
            String imageUrl = doc.select("a[href=" + infoList.get(i).attr("href") + "]").select("img").attr("src");
            System.out.println(imageUrl);
            //내용
            String content = contentList.get(i).text();
            System.out.println(content);

        }
        return "views/login/register";
    }
}

1. 먼저 제목과 링크는 <a> 태그의 article-headline 클래스 이름으로 불러옵니다.

2. 이미지는 있을수도 있고 없을 수도 있고 class, id 값이 따로 없기 떄문에 1번에서 불러온 링크 값을 이미지도 href로 갖고있다는 점을 사용해 이미지소스 src를 불러옵니다. 

3. 내용도 마찬가지로 id, class값이 따로 없고 2번처럼 해당 태그의 속성을 사용해 불러올 것도 없기 때문에 내용이 있는 태그 <p> 위에 main-url 이라는 class 이름을 가진 <span> 태그가 있다는 점을 사용해 인접형태선택자(+) 를 사용해 불러왔습니다.

 

[출력 결과는 다음과 같습니다.]

 

 

 

프로젝트 출처:

https://github.com/mtjin/springboot-itarticle

 

mtjin/springboot-itarticle

스프링부트 토이프로젝트. Contribute to mtjin/springboot-itarticle development by creating an account on GitHub.

github.com

 

댓글과 공감은 큰 힘이 됩니다. 감사합니다!!

 

728x90
Comments