자바를 이용하여 웹페이지 분석하기

자바를 이용하여 웹페이지  분석하기

1. 자바프로젝트 만들기

자바는 다양한 기능을 가지고 있습니다. 조금은 무겁고 다른 언어에 비해서 코딩량이 많지만 분명히 쓸만한 언어임에는 틀림없습니다.

파이썬 또는 Go등의 언어를 이용해서 웹페이지를 분석하는것은 어렵지 않습니다. 자바또한 jsoup을 이용하여 웹페이지를 분석하면 쉽게 분석할수 있습니다.

오늘은 자바를 이용하여 웹페이지를 읽어와서 원하는 정보를 가져오는 방법에 대해서 알아보돌고 하겠습니다.

우선 어떤페이지를 가져올지 확인해보도록 하겠습니다.

https://www.tiobe.com/tiobe-index/ 페이지에서는 언어순위를 제공하고 있습니다. 이러한 언어순위를 정보를 어떻게 가져오는지 확인해보도록 하겠습니다.

우선 자바에서 프로젝트를 만들어줍니다.

File > New > Java Project메뉴를 선택합니다.

자바프로젝트에 Crawler을 입력하고 Finish 버튼을 클릭합니다.

만들어진 프로젝트에서 src 폴더에서 마우스 오른쪽 버튼을 클릭합니다.

Package 이름에 common을 입력합니다.

Name 에 Crawler을 입력합니다.

public static void main(String[] args) 옵션을 체크합니다.

기본으로 main함수를 넣어주는지 확인하는 체크박스입니다. 선택하면 자동으로 main함수를 만들어주고 체크하지 않고 Finish버튼을 클릭하면 후에 소스에서 main 함수를 코딩해주면 됩니다.

Crawler.java파일이 생성되었습니다.

package는 common으로 설정되었습니다.

main함수가 기본으로 생성되었습니다.

2. jsoup설치하기

자바에서 웹페이지를 가져와서 분석하기 위해서는 jsoup 라이브러리를 이용해야 합니다. 파이썬에서 BeautifulSoup과 비슷한 역할을 하는 라이브러리 입니다.

jsoup 다운로드 : https://jsoup.org/download

현재 jsoup 버전은 1.10.3 버전이 최신버전입니다.

해당버전을 다운로드 받기 위해서 링크를 클릭합니다.

jsoup을 이클립스에서 사용하기 위해서는 다운로드 받은 파일을 이클립스 라이브러리에 추가해야 합니다.

이클립스에서 프로젝트를 선택하고 마우스 우측버튼을 클릭합니다.

팝업메뉴에서 Properties를 선택합니다.

프로젝트 Properties 팝업창 좌측에 lib검색어를 입력하고 Java Build Path를 선택합니다.

오른쪽 Add Extenral JARs 버튼을 클릭해서 다운로드 받은 파일을 선택하고 확인 버튼을 클릭합니다. 이제 라이브러리는 정상적으로 추가되었습니다.

소스를 코딩하도록 하겠습니다.

getTIOBE 함수를 만들어 줍니다.

Document doc를 선언합니다.

선언하면 위와 같이 Document 에 붉은색 물결무늬가 생성됩니다. 마우스를 오버하면 Document cannot be resulted to a type으로 시작하는 창이 생성됩니다. 거기에서 import “Document” (org.jsoup.nodes)를 클릭합니다.

그러면 위쪽에 import org.jsoup.nodes.Document;가 자동으로 추가됩니다.

위 창은 자료형이 여러개인경우 하나를 선택하도록 도와주는것입니다.

정확한 import를 해주고 나면 Jsoup.connet 하단에 붉은 줄무늬가 생성됩니다. 이경우에도 마우스를 오버하면 어떤 작업을 해야할지 나타납니다. 이번엔느 jsoup의 connect 함수가 exception을 일으키는데 어떻게 처리할지에 대해서 선택하는 것입니다

Add throws declaration을 선택하면 함수에 throws IOException 코드가 자동으로 생성되고

Surround with try / catch를 선택하면 해당 블록을 감싸는 try / catch문의 코드가 자동으로 생성됩니다.

해당프로젝트의 코딩규칙에 맞춰서 선택하면 됩니다.

이제 jsoup을 이용해서 웹페이지를 가져오는 방법을 알아보았습니다. 그러면 이제 해당 웹페이지에서 원하는 부분을 어떻게 가져오는지 확인해보도록 하겠습니다.

크롬에서 https://www.tiobe.com/tiobe-index/ 주소를 입력하고 엔터키를 클릭합니다.

페이지가 모두 로드되었으면 F12버튼을 눌러줍니다.

그러면 아래와 같이 좌측에 소스 우측에 Html이 출력될 것입니다.

우리가 읽어 오고 싶은 부분은 Ranking 20의 리스트를 나타내는 부분입니다. 해당 부분을 선택하면 우측에 해당부분의 첫 부분이 나타납니다.

<table class=”table table-striped table-top20″>

위와 같은 부분이 나타나는데요. class이름이 세개가 있습니다.

table, table-striped, table-top20 이렇게 세개가 있는데 이 세개중에 table-top20이 이 테이블의 유일한 class이름  일거 같습니다. 그럼 이 이름을 가지고 내용을 찾아보도록 하겠습니다.

Jsoup.connect를 통해서 가져온 doc에 select함수를 이용해서 값을 가져오도록 하겠습니다.

doc.select(“.table-top20”)

class를 사용할때는 “.”을 사용합니다. id를 사용할때는 “#”을 사용합니다. html 태그를 사용할 때는 그냥 이름을 입력하면 됩니다.

여기서는 위에서 class이름으로 되어있었기 때문에 .table-top20을 query이름으로 넣었습니다.

select 쿼리에 .table-top20을 입력하고 값을 가져왔습니다.

el.size()로 확인하니 1개의 값을 가져왔습니다.

el.text() <- 해당 내용의 값을 html값을 제거한 텍스트 내용을 가져옵니다.

el.html() <- 해당 내용읠 값을 html로 가져옵니다.

el.size()를 가져온다는 것은 el은 List라는 뜻입니다. 그러면 한개인경우와 여러개인경우 어떻게 값을 가져와야 할까요?

아래에서 이부분을 알아보도록 하겠습니다.

코드를 조금 수정했습니다. 한개의 값을 리턴한 경우와 한개 이상의 값을 리턴한 경우입니다.

한개는 그냥 html 또는 text를 가져오면 됩니다.

그런데 한개 이상에서는 for 문을 돌면서 여러개의 값을 가져옵니다.

이번에는 쿼리에 table을 넣어보도록 하겠습니다.  table만 넣은경우 해당 화면에서는 테이블의 갯수가 4개인것을 확인할수 있습니다.

이런경우 for문을 돌면서 4개의 html과 text의 내용을 모두 가져왔습니다.

프로그램을 실행시키는 방법은 소스창에서 마우스 오른쪽을 클릭하고  Run As > Java Application을 선택하면 소스가 실행됩니다.

이상과 같이 jsoup을 이용해서 웹페이지를 읽어오고 원하는 위치의 내용을 가져오는 방법을 알아보았습니다.

소스는 아래에서 다운받으시면 됩니다.

http://w3devlabs.net/wp/?attachment_id=16945

다운받은후에 확장자를 java로 변경하면 됩니다.

자바설치 및 이클립스 환경설정 #2/2

2. 이클립스 설치

이클립스는 아래의 주소에서 다운로드 받습니다.

다운로드 주소 : http://www.eclipse.org/downloads/

다양한 버전이 있습니다. 여기에서 Eclipse IDE for java Developers를 다운받아서 설치해보도록 하겠습니다.

파일을 다운로드 받아서 압축을 풀어줍니다. 저는 설치버전이 아니라 압축버전으로 다운로드 받아서 위와 같은 방식으로 압축을 풀어서 설치합니다.

압축을 풀면 eclipse폴더에서 eclipse.exe를 실행합니다.

이클립스를 실행하면 개발을 진행할 워크스페이스를 지정하게 되어있습니다. 저는 c:\view\java폴더를 만들어서 거기에서 작업을 할수 있도록 지정하였습니다.

User this as the default and do not ask again을 선택하면 이후 부터는 워크스페이스를 묻는 화면이 나오지 않습니다. 저는 다음에도 위 창이 나오도록 해당 체크박스를 선택하지 않습니다.

최초로 실행한 이클립스 화면입니다.

여기에 자바프로젝트를 만들어서 실행해보도록 하겠습니다.

메뉴에서 File > New > Java Project 를 선택합니다.

위와같이 New java Project 창이 나타납니다. 새로운 프로젝트 이름을 입력합니다. 여기서는 HelloWorld로 만들어 보도록 하겠습니다.

HelloWorld를 입력하고 Finish 버튼을 클릭합니다.

위와같이 HelloWorld프로젝트가 생성된것을 확인할수 있습니다.

다음으로 프로젝트에 class 를 추가해서 실행을 해보도록 하겠습니다.

HelloWorld 프로젝트를 선택하고 마우스 오른쪽 버튼을 클릭하면 위와 같은 메뉴가 나타나는 것을 확인할 수 있습니다.

이번에는 Java Project가 아니라 중간에 있는 Class를 선택해보겠습니다.

New Java Class화면이 출력됩니다.

Name에 HelloWorld를 입력하고 중간에 체크박스로 public static void main(String[] args) 체크박스를 선택하면 클래스에 main함수가 자동으로 들어가게 되어 있습니다.

이 클래스는 패키지가 있거나 상속받지않고 만들어지기 때문에 위의 두가지만 확인하고 Finish버튼을 클릭합니다.

드디어 첫번째 프로젝트에 첫번째 클래스가 만들어졌습니다. 그런데 에디터 창에 글씨가 작은것 같아 글씨 크기를 늘려보도록 하겠습니다.

글씨크기를 변경하는 방법은 Window > Preferences 메뉴를 클릭합니다.

Preferences 화면이 출력되면 좌측상단에 검색데이터에 font라고 입력하고  Colors and Fonts가 검색되면 해당 메뉴를 클릭합니다.

Colors and Fonts를 선택하면 오른쪽 화면이 위와 같이 변경됩니다.Text Font를 선택하고 Edit버튼을 클릭하면 위와 같이 글꼴을 선택하는 화면이 나옵니다. 여기에서 폰트크기를 12로 변경해보았습니다. 

조금전보다 커진 글씨를 확인할 수 있습니다. 이미지가 축소되서 모르겠지만 아래 그림은 확대된것을 잘 알수 있습니다.

드디어 모든 설정이 끝났습니다.

위와같이 코드를 입력합니다. 이 코드는 Hello World!!!를 콘솔에 입력하는 프로그램입니다. 이 클래스를 실행하기 위해서는 아래와 같이 두가지 방법이 있습니다.

소스 에디터 창에서 마우스 오른쪽 버튼을 클릭하고 중간에  Run > Java Application을 선택합니다.

또한가지 방법은 상단의 메뉴에서 Run > Run을 선택합니다.

위의 두가지 방법을 이용하여 소스를 실행시키면 아래와같이 결과가 출력됩니다.

이클립스에서 실행하면 아래 콘솔창에 Hello World!!!가 출력되는것을 확인할수 있습니다.

이상에서 JDK설치와 이클립스를 설치하는 방법을 알아보았습니다.

이제 자바개발하러 고고씽.. !!