반응형
# 자바 크롤링
## 준비물
- Jsoup : 자바로 만들어진 HTML parser로 DOM 구조를 추적하거나 CSS 선택자를 이용, 데이터를 찾아 추출할 수 있다.
## 라이브러리 추가
https://jsoup.org/download 접속하여 Jsoup jar파일을 모두 다운로드 후 프로젝트에 추가해 준다.
## 사용
- ajax인 경우에는 해당방법으로 가져올 수 없음
public class CrawlingService {
public void getCrawling() {
// Jsoup를 이용해서 "사이트" 크롤링
String url = "사이트 주소"; //크롤링할 url지정
Document doc = null; //Document에 페이지의 전체 소스가 저장된다
try {
doc = Jsoup.connect(url).get();
} catch (IOException e) {
e.printStackTrace();
}
//select를 이용 원하는 태그를 선택(select는 원하는 값을 가져오기 위한 중요한 기능이다.)
Elements element = doc.select(".covid19_datagroup");
element.select("em");
String str = element.text();
System.out.println("확인 : " + str);
System.out.println("============================================================");
//Iterator을 사용 하나씩 값을 가져오기
Iterator<Element> ie1 = element.select("strong.rank").iterator();
Iterator<Element> ie2 = element.select("strong.title").iterator();
while (ie1.hasNext()) {
System.out.println(ie1.next().text()+"\t"+ie2.next().text());
}
System.out.println("============================================================");
}
}
- 아래의 경우 ajax 크롤링 가능
String url = "https://www.sejong.go.kr/prog/fluInfo/listAjax.do";
Document doc = null;
try {
doc = Jsoup.connect(url)
.header("origin", "https://www.sejong.go.kr/") // same-origin-polycy 로 인한 설정
.header("referer", "https://www.sejong.go.kr/") // same-origin-polycy 로 인한 설정
.ignoreContentType(true) // json 받아오려면 타입무시를 해야하는듯?
.get();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String json = doc.select("body").text();
반응형
'프로그래밍 > 자바, JDBC' 카테고리의 다른 글
스프링 부트 스케줄러 적용방법 (0) | 2020.09.29 |
---|---|
게시판 리스팅되는 시간 측정 방법 (0) | 2020.09.25 |
자바 날짜 비교하여 날짜간의 차이 구하기. (0) | 2020.08.29 |
lodash (throttle, debounce) 개념 (0) | 2020.08.26 |
cannot be cast to java.lang.String 해결방법 (0) | 2020.08.09 |