2013년 7월 29일 월요일

자바 스윙(JAVA Swing)의 HTMLEditorKit을 이용한 웹 페이지 파싱

Swing을 이용한 웹페이지 파싱



오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷  실무전문 강의)



JDK의 swing 패키지에는 html을 파싱 하는 기능이 포함되어 있는데 이기능을 적절히 이용하면 웹 페이지에서 원하는 내용을 추출 할 수 있을 것입니다.

 다음의 예제를 보시면 html Tag중에서 원하는 태그의 내용을 간단히 파싱하는 것을 확인 할 수 있으니 참고 하시기 바랍니다

[OnjWebParser .java]

import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.HTML;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.HttpURLConnection;
import javax.swing.text.MutableAttributeSet;
import javax.swing.text.html.parser.ParserDelegator;
/**
 *
 * @author 이종철(오라클자바커뮤니티, 오엔제이프로그래밍 실무학원) * TODO To change the template for this generated type comment go to
 *
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class OnjWebParser {
 // 파서는 콜백 형식으로 되어 있다. 각 태그가 들어 올때 적절한 메소드가 호출됨
 private class CallbackHandler extends HTMLEditorKit.ParserCallback {
  // 태그가 시작할 때 호출 되는 메소드
  public void handleStartTag(HTML.Tag tag, MutableAttributeSet a, int pos) {
   // <A href 인 경우... A태그를 찾는다...
   if (tag == HTML.Tag.A) {
    System.out
      .println(a
        .getAttribute(javax.swing.text.html.HTML.Attribute.HREF));
   }
  }
  // 텍스트가 들어올때 호출되는 메소드
  public void handleText(char[] data, int pos) {
   System.out.println(data);
  }
 }
 public void parse(String str) {
  String content = null;
  try {
   // 입력받은 URL에 연결하여 InputStream을 통해 읽은 후 파싱 한다.
   URL url = new URL(str);
   HttpURLConnection con = (HttpURLConnection) url.openConnection();
   InputStreamReader reader = new InputStreamReader(
     con.getInputStream(), "euc-kr");
   new ParserDelegator().parse(reader, new CallbackHandler(), true);
   con.disconnect();
  }
  catch (Exception e) {
   e.printStackTrace();
  }
 }
 public static void main(String[] args) {

  OnjWebParser parser = new OnjWebParser();
 }
}

[결과]
오엔제이프로그래밍실무학원
./
javascript:goMenu01();
ㆍHOMEㆍ

mailto:webmaster@onjprogramming.co.kr
COMTACT USㆍ

javascript:goMenu63();
SITEMAP
javascript:fn_loginok()

ID저장
javascript:fn_loginok()
javascript:fn_loginok()
../member/mem-join.html
../member/mem-idpw.html
today Hit
126
교육센터회원
5919
커뮤니티회원
9433
/onj/curri/curri-master.html?command=1625
#tabs-1
JAVA
#tabs-2
ORACLE
#tabs-3
iPhone/Android
#tabs-4
.NET
#tabs-5
표준웹/HTML5
#tabs-6
채용/취업무료교육
#tabs-7
초보자(재학생)코스
../curri/curri-master.html?command=1645
JAVA&WEB프레임워크실무과정

14일
98시간

08-09
../curri/curri-master.html?command=1673
Spring3.X, MyBatis, Hibernate실무과정

5일
35시간

08-09
../curri/curri-master.html?command=1677
JAVA,JSP 초보에서 실무까지


18일
56시간

07-31
../curri/curri-master.html?command=1626
자바초보에서안드로이드까지

18일
54시간

08-01
../curri/curri-master.html?command=1667
JAVA&WEB프레임워크실무과정

33일
99시간

08-08
../curri/curri-master.html?command=1674
Spring3.X, MyBatis, Hibernate실무과정

12일
36시간

08-08
../curri/curri-master.html?command=1676
(개발과정)Ajax,jQuery,MyBatis&Spring3.X개발자과정

14일
42시간

08-09
../curri/curri-master.html?command=1627
자바초보에서안드로이드까지

8일
56시간

08-03
../curri/curri-master.html?command=1646
JAVA&WEB프레임워크실무과정

14일
98시간

08-03
../curri/curri-master.html?command=1661
Spring3.X, MyBatis, Hibernate실무과정

5일
35시간

08-10
../curri/curri-master.html?command=1662
MiPlatform, XPlatform 실무강좌

5일
35시간

08-10
../curri/curri-master.html?command=1675
(개발과정)Ajax,jQuery,MyBatis&Spring3.X개발자과정

6일
42시간

08-10
../curri/curri-master.html?command=1379
SQL초보에서실전전문가까지


8일
56시간

07-31
../curri/curri-master.html?command=1642
오라클 마스터


18일
54시간

07-29
../curri/curri-master.html?command=1583
SQL초보에서실전전문가까지

18일
54시간

08-07
../curri/curri-master.html?command=1666
SQL초보에서실전전문가까지

8일
56시간

08-03
../curri/curri-master.html?command=1637
오라클 마스터

8일
56시간

08-10
../curri/curri-master.html?command=1640
Android Developer 코스

5일
40시간

08-09
../curri/curri-master.html?command=1638
Android Developer 코스


14일
42시간

07-31
../curri/curri-master.html?command=1626
자바초보에서안드로이드까지

18일
54시간

08-01
../curri/curri-master.html?command=1332
iPhone 하이브리드 앱 개발 실무과정

14일
42시간

08-09
../curri/curri-master.html?command=1627
자바초보에서안드로이드까지

8일
56시간

08-03
../curri/curri-master.html?command=1216
iPhone 하이브리드 앱 개발 실무과정

6일
42시간

08-10
../curri/curri-master.html?command=1639
Android Developer 코스

6일
42시간

08-10
../curri/curri-master.html?command=1547
C#,ASP.NET마스터

8일
56시간

08-08
../curri/curri-master.html?command=1671
C#,ASP.NET마스터

18일
56시간

08-08
../curri/curri-master.html?command=1650
C#,ASP.NET마스터

8일
56시간

08-03
../curri/curri-master.html?command=1635
웹퍼블리싱 마스터

5일
40시간

08-09
../curri/curri-master.html?command=1625
[채용확정교육]오라클자바개발자4개월과정

80일
560시간

08-16
../curri/curri-master.html?command=1632
웹퍼블리싱 마스터

14일
42시간

08-08
../curri/curri-master.html?command=1630
HTML5, CSS3,Ajax, jQuery마스터과정

14일
42시간

08-09
../curri/curri-master.html?command=1631
HTML5, CSS3,Ajax, jQuery마스터과정


6일
42시간

00-00
../curri/curri-master.html?command=1633
웹퍼블리싱 마스터

6일
42시간

08-03
../curri/curri-master.html?command=1662
MiPlatform, XPlatform 실무강좌

5일
35시간

08-10
../curri/curri-master.html?command=1625
[채용확정교육]오라클자바개발자4개월과정

80일
560시간

08-16
../curri/curri-master.html?command=1547
C#,ASP.NET마스터

8일
56시간

08-08
../curri/curri-master.html?command=1671
C#,ASP.NET마스터

18일
56시간

08-08
../curri/curri-master.html?command=1650
C#,ASP.NET마스터

8일
56시간

08-03
../curri/curri-master.html?command=1642
 오라클 마스터

07-29
../curri/curri-master.html?command=1677
 JAVA,JSP 초보에서 실무까


07-31
../curri/curri-master.html?command=1626
 자바초보에서안드로이드까


08-01
../curri/curri-master.html?command=1650
 C#,ASP.NET마스터

08-03
../curri/curri-master.html?command=1646
 JAVA&WEB프레임워크실무과


08-03
../curri/curri-master.html?command=1583
 SQL초보에서실전전문가까지

08-07
/onj/curri/m-curri-master.html
../curri/curri-master.html?command=1631
 HTML5, CSS3,Ajax, jQuery


00-00
../curri/curri-master.html?command=1379
 SQL초보에서실전전문가까지

07-31
../curri/curri-master.html?command=1638
 Android Developer 코스

07-31
../curri/curri-master.html?command=1627
 자바초보에서안드로이드까


08-03
../curri/curri-master.html?command=1633
 웹퍼블리싱 마스터

08-03
../curri/curri-master.html?command=1547
 C#,ASP.NET마스터

08-08
#tabsub-1
NOTICE
#tabsub-2
구인구직
../notice/notice-content.html?num=1221&page=
오엔제이 프로그래밍 실무학원 소개
2013-07-20
../notice/notice-content.html?num=1064&page=
(전액무료)개발잘하는 신입 무료로 뽑기 프로젝트(미취업자취업무료교육)

2013-06-15
../notice/notice-content.html?num=1233&page=
[평일주간개강확정 7월15일] 채용확정자교육 16기
2013-07-12
../notice/notice-content.html?num=1232&page=
[평일야간개강확정7월19일] iPhone 하이브리드 앱 개발 실무과정
2013-07-08
../notice/notice-content.html?num=1230&page=
[평일주간개강확정] 7/8]Spring3.X, MyBatis, Hibernate실무과정
2013-06-27
../notice/notice-content.html?num=1229&page=
[평일야간개강확정 7/11]SQL초보에서실전전문가까지
2013-07-01
../notice/notice-content.html?num=1228&page=
[평일야간개강확정 6/25] C#,ASP.NET마스터
2013-06-20
../recruit/recruit-view.html?num=330&page=
2013-07-18
../recruit/recruit-view.html?num=329&page=
2013-07-13
../recruit/recruit-view.html?num=328&page=
2013-06-23
../recruit/recruit-view.html?num=327&page=
2013-06-12
../recruit/recruit-view.html?num=326&page=
2013-06-11
../recruit/recruit-view.html?num=325&page=
[오엔제이시스템즈]정규직 구인
2013-06-01
../recruit/recruit-view.html?num=316&page=
LG U+ 업무시스템개발
2013-04-22
사업자등록번호 :144-90-00505
통신판매업신고번호
 :2013-서울구로-0458
대표이사 :이종철
주소
 :서울 구로구 구로3동 222-8 코오롱디지털타워빌란트2차 803호 오엔제이 프로그래밍실무학원
전화 :02)851-4790
SI사업관련
 :02)851-4790
팩스
 :0505-719-4790
Copyright ⓒ

#
onjprogramming.co.kr

All Rights Reserved.

http://cafe.daum.net/fordeveloper2
../curri/m-curri-calendar.html
../recruit/recruit-01.html
javascript:window.external.AddFavorite('http://www.onjprogramming.co.kr/' ,
'오엔제이 프로그래밍실무학원');

[출처]오라클자바커뮤니티
www.oraclejavacommunity.co.kr




댓글 없음:

댓글 쓰기