웹개발 교육/Java

[41일] 크롤링 (2) - 공지사항 제목 가져오기

2022. 9. 23. 12:31

https://www.choongang.co.kr/html/sub07_01_n.php

 

중앙정보처리학원 / 중앙정보기술인재개발원

공식홈페이지,51년역사 JAVA,인공지능,빅데이터,사물인터넷,채용연계 SW기술 무료 취업교육

www.choongang.co.kr

위 사이트의 공지사항에서 제목만 가져와보자

 

우선 웹페이지의 소스를 가져와야 한다.

package crawling0923;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class Test01_choongang {

	public static void main(String[] args) {
		// 중앙정보처리학원 웹페이지의 공지사항 제목만 크롤링 하기
		try {
			
			String URL = "https://www.choongang.co.kr/html/sub07_01_n.php";
			
			//웹페이지 소스 가져오기			
			Document doc = Jsoup.connect(URL).get();			
			System.out.println(doc.toString());
			
		} catch (Exception e) {
			System.out.println("크롤링 실패 : " + e);
		}//end

	}//main() end
}//class end

 

그런데 공지사항에는 1페이지만 있는 것이 아니고 더 많은 페이지들이 있다.

url을 다시 확인해보면 다른 페이지를 열 때마다? 뒤의 page=숫자에서 숫자 부분이 바뀐다. 이를 미루어 보아 숫자 부분은 공지사항의 페이지 번호를 의미하는 것을 알 수 있다.

 

공지사항이 1 ~ 11페이지까지 있기 때문에 1 ~ 11 웹페이지 소스를 가져와야 한다.

분홍색 박스 부분(전달값)은 계속 변경되기 때문에 연두색 박스 부분과 분홍색 박스 부분은 분리해서 작업하도록 한다.

 

package crawling0923;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class Test02_choongang {

	public static void main(String[] args) {
		// 중앙정보처리학원 웹페이지의 공지사항 제목만 크롤링 하기
		try {
			
			String URL = "https://www.choongang.co.kr/html/sub07_01_n.php";
			
			//공지사항 웹페이지 1~11 페이지 소스 가져오기
			for(int p=1; p<=11; p++) {
				String params = "?page=" + p + "&mod=&idx=";
				
				//System.out.println(params);				
				Document doc = Jsoup.connect(URL+params).get();			
				System.out.println(doc.toString());
			}//for end

		} catch (Exception e) {
			System.out.println("크롤링 실패 : " + e);
		}//end

	}//main() end
}//class end

page=숫자에서 숫자 부분은 p로 변수 처리하여 반복문을 통해 1 ~ 11까지 params에 담아 초록색 박스에 해당하는 URL과 분홍색 박스에 해당하는 params를 문자열 연산을 통해 합하여 공지사항 1 ~ 11 페이지까지의 소스를 가져왔다.

 

이제 제목에 해당하는 html의 요소를 선택해보자

개발자 도구를 통해 제목을 보면 제목이 'default_title'이라는 class에 속해 있는 것을 확인할 수 있다. 따라서 .default_title 을 가져오도록 하면 된다.

 

package crawling0923;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class Test03_choongang {

	public static void main(String[] args) {
		// 중앙정보처리학원 웹페이지의 공지사항 제목만 크롤링 하기
		try {
			
			String URL = "https://www.choongang.co.kr/html/sub07_01_n.php";
			
			//공지사항 웹페이지 1~11 페이지 소스 가져오기
			for(int p=1; p<=11; p++) {
				String params = "?page=" + p + "&mod=&idx=";				
				//System.out.println(params);				
				Document doc = Jsoup.connect(URL+params).get();			
				//System.out.println(doc.toString());
				
				//요소 선택하기
				/*
					<td class="default_title"><a href="javascript:goDetail('156','','');">[22.10.08 개강][청년친화형 기업ESG 지원사업] AI 산업이해 일 · 경험 직무체험 교육</a></td>
				*/
				Elements elements = doc.select(".default_title");
				for (Element element : elements) { //for(개별:덩어리)
					System.out.println(element.text());
				}//for end
				
			}//for end

		} catch (Exception e) {
			System.out.println("크롤링 실패 : " + e);
		}//end

	}//main() end
}//class end

for(개별:덩어리)는 elements 변수(덩어리)에 들어있는 .default_title에서 하나씩 element(개별)에 담아준다.

 

'웹개발 교육 > Java' 카테고리의 다른 글

[41일] 크롤링 (4) - 공지사항 제목 크롤링 연습예제  (0) 2022.09.23
[41일] 크롤링 (3) - 크롤링 결과 파일에 저장  (0) 2022.09.23
[41일] 크롤링 (1) - 개요 및 jsoup 라이브러리 설치  (0) 2022.09.23
[40일] JDBC (14) - 페이징  (0) 2022.09.22
[40일] JDBC (13) - 연습 문제  (0) 2022.09.22
'웹개발 교육/Java' 카테고리의 다른 글
  • [41일] 크롤링 (4) - 공지사항 제목 크롤링 연습예제
  • [41일] 크롤링 (3) - 크롤링 결과 파일에 저장
  • [41일] 크롤링 (1) - 개요 및 jsoup 라이브러리 설치
  • [40일] JDBC (14) - 페이징
ewok
ewok
ewok
기록장
ewok
전체
오늘
어제
  • 분류 전체보기
    • 웹개발 교육
      • HTML
      • CSS
      • JavaScript
      • Database
      • Java
      • jQuery
      • Ajax
      • Bootstrap
      • jsp
      • Spring
      • MyBatis
      • 프로젝트
    • JAVA
    • SpringBoot
      • 기초
      • AWS
      • 개인프로젝트
    • Spring Security
    • JPA
    • 테스트코드
    • Error
    • CS
      • 컴퓨터 구조
      • 이산수학
    • 알고리즘
      • 정리
      • Java
    • SQL
    • 자격증
      • SQLD
      • 정보처리기사
    • Git

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • org.springframework.beans.factory.UnsatisfiedDependencyException
  • branch
  • git bash
  • sqld 자격증
  • 브랜치
  • merge commit
  • 노랭이
  • 생성자
  • GIT
  • org.hibernate.tool.schema.spi.CommandAcceptanceException
  • 버전 관리
  • sqld 합격
  • base
  • SQLD
  • this

최근 댓글

최근 글

hELLO · Designed By 정상우.
ewok
[41일] 크롤링 (2) - 공지사항 제목 가져오기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.