프로그램이 실행되면 우선 검색할 단어를 입력받은 후 네이버 영어사전에서 그 단어의 뜻을 크롤링해 띄우는 간단한 프로그램을 만들 것이다.
네이버 영어사전의 검색링크는 https://endic.naver.com/search.dict?sLn=kr&isOnlyViewEE=N&query="검색할 단어" 의 형식으로 구성된다. 위 링크로 접속해 가장 먼저 뜨는 단어의 뜻을 크롤링할 것이다.
웹브라우저의 개발자 기능을 사용하면 그 페이지의 소스를 볼 수 있다. 필요한 첫 번째 뜻의 소스는 빨간 사각형 속 소스이다. 이제 이 링크와 소스를 바탕으로 프로그래밍을 할 것이다.
프로그램을 만들기 위해서 크롤링을 할 수 있게 해주는 jsoup을 설치해야한다. jsoup 은 자바로 만들어진 HTML 파서인데 이를 활용해 HTML을 파싱하거나 CSS 선택자를 사용해 데이터를 추출하는 등의 작업을 할 수 있다.
위 링크를 타면 다운로드 페이지로 갈 수 있다.
사진 속 빨간 박스를 클릭하면 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();
}
}
글에 문제가 있거나 질문이 있다면 댓글로 남겨주세요.