카테고리 없음

jsoup 을 활용한 영어사전 프로그램 만들기

이륙 2021. 8. 14. 14:52

 프로그램이 실행되면 우선 검색할 단어를 입력받은 후 네이버 영어사전에서 그 단어의 뜻을 크롤링해 띄우는 간단한 프로그램을 만들 것이다.

 네이버 영어사전의 검색링크는 https://endic.naver.com/search.dict?sLn=kr&isOnlyViewEE=N&query="검색할 단어" 의 형식으로 구성된다. 위 링크로 접속해 가장 먼저 뜨는 단어의 뜻을 크롤링할 것이다.

 웹브라우저의 개발자 기능을 사용하면 그 페이지의 소스를 볼 수 있다. 필요한 첫 번째 뜻의 소스는 빨간 사각형 속 소스이다. 이제 이 링크와 소스를 바탕으로 프로그래밍을 할 것이다.

 

 프로그램을 만들기 위해서 크롤링을 할 수 있게 해주는 jsoup을 설치해야한다. jsoup 은 자바로 만들어진 HTML 파서인데 이를 활용해 HTML을 파싱하거나 CSS 선택자를 사용해 데이터를 추출하는 등의 작업을 할 수 있다.

 https://jsoup.org/download

 

Download and install jsoup

Download and install jsoup jsoup is available as a downloadable .jar java library. The current release version is 1.14.1. What's new See the 1.14.1 release announcement for the latest changes, or the changelog for the full history. Previous releases of jso

jsoup.org

 위 링크를 타면 다운로드 페이지로 갈 수 있다.

 사진 속 빨간 박스를 클릭하면 jsoup-1.14.1.jar 이라는 파일이 설치된다. 이 파일을 프로젝트 파일로 옮기면 jsoup을 사용할 수 있다.

 소스코드가 어렵지 않아 주석만 달았다.

import org.jsoup.Jsoup;

import org.jsoup.nodes.Document;
import java.util.Scanner;

import org.jsoup.select.Elements;

 

public class Dictionary {
    public static void main(String args[]) {
        //doit 호출
        doit();
    }
    public static void doit () {
        // 검색어를 입력받아 str에 저장한 후 네이버 사전 검색 링크와 합쳐 url에 저장
        System.out.println("검색어를 입력해주세요.");
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        String url ="https://endic.naver.com/search.dict?sLn=kr&isOnlyViewEE=N&query=" + str;
    
        Document doc = null;
    
        try {
            
            //url의 소스코드는 doc에 저장
            doc = Jsoup.connect(url).get();
    
        } catch (Exception e) {
    
            e.printStackTrace();
    
        }
        
        //doc(소스코드) 속 fnt_k05(뜻 class명)에 해당하는 값(뜻)을 가져온다.
        Elements element = doc.select("span.fnt_k05");
        //그 중 가장 처음 값의 text를 가져와 result에 저장한다.
        //text는 태그 사이의 값이다.
        String result = element.first().text();
        //result를 출력하고 다시 doit 함수를 호출해 반복한다.
        System.out.println(result);
        doit();
    }      
}

 글에 문제가 있거나 질문이 있다면 댓글로 남겨주세요.