본문 바로가기
Backend/JAVA_Crawling

02. JAVA를 이용한 크롤링 (콘솔창에 출력)

by 개발개발빈이 2022. 6. 11.

○ 내 블로그 포스팅 제목 크롤링하기

    1) 1단계 : 페이지 1에 있는 내용 전체 크롤링 (https://binscode.tistory.com/category)

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

public class Test01_crawling {

	public static void main(String[] args) {
		
		try {
			String URL="https://binscode.tistory.com/category";
			Document doc=Jsoup.connect(URL).get();		
			System.out.println(doc.toString());

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

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

페이지 전체 소스가 콘솔창에 출력됨

 

    2) 2단계 : 모든 페이지 내용 크롤링

            - 총 107개 포스팅, 한 페이지에 8개씩 포스팅 노출되므로 총 페이지 14

            - 크롤링할 URL : https://binscode.tistory.com/category?page=1 ~ page=14

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

public class Test02_crawling {

	public static void main(String[] args) {

		try {
			
            String URL="https://binscode.tistory.com/category";
			String params= "";
			
			for(int page=1; page<=14; page++) {
				
				params = "?page=" + page; // ?뒤의 문자열을 구성

				Document doc=Jsoup.connect(URL+params).get();
				System.out.println(doc.toString());	
				
			}//for end
			
		} catch (Exception e) {
			System.out.println("크롤링 실패: " + e);
		}//try end
		
	}//main() end

}//class end

 

    3) 3단계 : 모든 페이지 내용 중 제목만 크롤링

            - 크롬 개발자도구(F12)를 이용해 포스팅 제목의 요소 분석

            - class="title" 요소만 크롤링하기 : Element, Elements 클래스 이용

 

포스팅 제목은 <span class="title">

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

public class Test03_crawling {

	public static void main(String[] args) {

		try {

			String URL="https://binscode.tistory.com/category";
			String params= "";		
			
			for(int page=1; page<=14; page++) {
				
				params = "?page=" + page;				
				Document doc=Jsoup.connect(URL+params).get();
				
				Elements elements=doc.select(".title"); //class="title"
				
				for(Element element : elements) {
					System.out.println(element.text()); //107개 제목 출력
				}//for end
			
			}//for end

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

}//class end

포스팅 제목만 크롤링 되었다

 

    +) 어떠한 요소 안에 있는 요소들 중에서 특정 요소만 제거하고 싶을 때

<div class="post-item">의 내용을 크롤링하는데 주황색 <span class="excerpt">는 빼고 싶을 때

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

public class Test04_crawling {

	public static void main(String[] args) {

		try {
				String URL="https://binscode.tistory.com/category/Yummy";
				Document doc=Jsoup.connect(URL).get();
				Elements elements=doc.select(".post-item");
				elements.select(".excerpt").remove(); //class=excerpt 제거

				for(Element element : elements) {	
					System.out.println(element.text());
				}//for end
				
		} catch (Exception e) {
			System.out.println("크롤링 실패: " + e);
		}//try end
		
	}//main() end

}//class end

<div class="post-item"> 전부 크롤링 했을 때
elements.select(".excerpt").remove(); 한 결과

 

댓글