❗️ spring boot를 이용하여 코드를 작성하였습니다.
dependencies {
implementation 'org.jsoup:jsoup:1.15.3'
}
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
public class ArticleCrawler{
private static String title = "";
private static String contents = "";
private static LocalDateTime date;
public static Article workCrawler(String url) throws DateTimeParseException {
Document doc;
// div class ="time_area" : 작성일
// h2 class ="news_ttl" : 제목
// div class = "news_cnt_detail_wrap": 내용
try {
doc = Jsoup.connect(url).get();
date = LocalDateTime.parse(
doc.
selectFirst(".registration").
text().
replace("입력 : ", ""),
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
);
// 기사 title
title = doc.getElementsByTag("title").text();
// 기사내용
contents = doc.getElementsByClass("news_cnt_detail_wrap").text();
System.out.println(
"title: " + title + "\n" +
"date: " + date + "\n" +
"contents: " + contents);
}catch (Exception e){
e.printStackTrace();
}
return new Article(title, contents, date);
}
}
public static Article workCrawler(String url)
doc = Jsoup.connect(url).get();
date = doc.selectFirst(".registration").text();
title = doc.getElementsByTag("title").text();
contents = doc.getElementsByClass("news_cnt_detail_wrap").text();
selectFirst()
: 같은 이름으로 작성된 태그들 중 첫 번째 요소 가져오기
text()
: text만 가져오기
getElementsByTag()
: id값으로 값 가져오기
getElementsByClass()
: class 이름으로 값 가져오기
나는 기사 내용을 간단하게 가져오는 클래스를 작성했다. 더 깊게 공부하거나 본인이 크롤링하려는 의도대로 코드를 작성하려면 공식 문서를 참고하여 알맞은 메소드들을 찾아서 활용하면 된다.
공식 문서
https://jsoup.org/cookbook/introduction/parsing-a-document