학원에서 파이널 프로젝트때 친구가 맡은 부분인 '크롤링' 이란 기능에 흥미가 생겨서 개인프로젝트에서 사용해보기로하였다. 진행하던 중에 자바로 간단하게 크롤링 실습을 해보았는데 그 내용을 올려본다.
크롤링이란 기능은 보통 Python에서 많이 쓴다고는 하지만, 자바에서는 Jsoup 라이브러리를 통해 제공한다.
크롤링 라이브러리(Jsoup)
- Jsoup이란 자바로 만들어진 HTML Parser다. Jsoup은 DOM 구조를 추적하거나 CSS 선택자를 사용하여 데이터를 찾아 추출할 수 있다.
- 크롤링을 하려면 Jsoup 라이브러리를 추가해야한다.
=> https://jsoup.org/download 에서 .jar파일을 다운받아 추가하거나, 스프링레거시프로젝트로 진행중이라면 메이븐을 통해 추가 시킬 수있다.
* 프로젝트에 라이브러리 추가방법 *
해당프로젝트 우클릭 ->Properties - >Java Build Path -> Add External JARs -> 다운받은 Jar파일추가
라이브러리 추가가 완료된다면 크롤링할 사이트를 찾아본다.
필자는 개인프로젝트에서 단어장을 매일 업로드하기위해 크롤링 할 만한 사이트를 찾다가
'네이버 영어사전' 이 오늘의 단어를 매일 업데이트를 해주는 것 같아서 선택해보았다.
크롤링할 주소=> https://endic.naver.com/?sLn=kr
저는 이부분을 크롤링 해보았습니다.(오늘의 단어를 감싸는 ul태그)
<코드>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
package com.wordbook.util;
import java.io.IOException;
import java.util.Iterator;
import org.jsoup.*;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Crawler {
//크롤러
public static void main(String[] args) {
// Jsoup를 이용해서 https://endic.naver.com/?sLn=kr 크롤링
String url = "https://endic.naver.com/?sLn=kr"; //크롤링할 url지정
Document doc = null; //Document에는 페이지의 전체 소스가 저장된다
try {
doc = Jsoup.connect(url).get();
} catch (IOException e) {
e.printStackTrace();
}
//select를 이용하여 원하는 태그를 선택한다. select는 원하는 값을 가져오기 위한 중요한 기능이다.
// ==>원하는 값들이 들어있는 덩어리를 가져온다
Elements element = doc.select("ul.component_today_word");
System.out.println("============================================================");
//Iterator을 사용하여 하나씩 값 가져오기
//덩어리안에서 필요한부분만 선택하여 가져올 수 있다.
Iterator<Element> ie1 = element.select("a.word_link").iterator();
Iterator<Element> ie2 = element.select("div.txt_trans").iterator();
while (ie1.hasNext()) {
System.out.println(ie1.next().text()+"\t"+ie2.next().text());
}
System.out.println("============================================================");
}
}
|
cs |
크롤링할때 위 코드와 아래사진을 비교해보면 ul.component_today_word 식으로 선택해서 웹을 긁어낼 수 있는데 쉽게 생각하면 '태그타입.클래스 명' 이라고 생각하면 됩니다.
참고블로그 : https://ming9mon.tistory.com/
'웹개발 > Java & JavaScript' 카테고리의 다른 글
[JS] JavaScript에서 contextpath 구하기(window 객체 활용) (0) | 2020.11.24 |
---|---|
[JavaScript] 숫자표기시 콤마(,) 표기시키기 [code] (0) | 2020.09.09 |
[java]코딩연습 - 369게임 (0) | 2019.02.28 |
[Java 개념정리] HashMap 을 이용한 영어단어장[코드] (0) | 2019.02.22 |
[Java 개념정리] HashMap 관련함수 (0) | 2019.02.19 |
댓글