Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- sha1
- Instrumentation
- StringUtils
- Callable
- Log4J
- ORM
- Freemaker
- Postman
- date
- Executor
- xlet
- RSA
- Runnable
- JCE
- Java
- 한글조사
- PKCS
- AES
- 자바 암호화
- String
- DAMO
- 암호학
- IPTV
- mac
- PKCS#8
- 이클립스 플러그인 개발
- 자바
- 한글조사처리
- Executors
- ACAP
Archives
- Today
- Total
오늘은 어디로 갈까...
HtmlCleaner 본문
HTML의 장점이자 단점은 바로 융통성이다. 융통성 있는 구조를 가지다 보니, 대충(?) 만들어도 브라우저같은곳에서 잘 보여준다.
그런데... 문제는...
프로그래밍해서 html을 분석하기에는 참 난해한것이다.
규격에 안맞다보니, 섬세하게(?) 제어할려고 하면 꽥~~하는 습성이 있는것이다.
뭐 일일이 수작업(?)으로 분석할 수는 있지만, 그건 너무 잔혹하지 않는가.
이런 고민을 한방에 해결해 줄 라이브러리가 있으니,
그건 바로 Html Cleaner!!! (http://htmlcleaner.sourceforge.net/)
이름 그대로 깔끔한 성격이라서, 매우 마음에 든다.
대상 html을 마음껏 요리할 수 있는 자체 API도 제공하고, xml로 변환하여 처리할 수도 있다.
1. 사용하기.
- 아래처럼, HtmlCleaner 인스턴스를 생성하여 clean(대상) 메소드를 실행하면 된다.
- 반환되는 TagNode는 일반적인 DOM 방식의 Node 처럼 사용이 기능하다. (getElements...)
- Object[] evaluateXPath(String) 메소드를 이용하면 XPath형식으로 반환할 대상을 지정할 수 있다.
- 즉 아래처럼 html이 있을때,
"나는 누굴까?", "너는 누굴까?", "우리는 누굴까?"값만 가지고 오고 싶으면,
이런씩으로 구현하면 그 대상 node만 손쉽게 가져올 수 있다.
* 참고
2. 불필요한 요소 제거
-불필요한 요소를 제거 할려면, CleanerProperties 클래스의 setXXX() 메소드를 이용해서 설정해주면 된다.
3. XML로 만들어보기.
- XmlSerializer 를 이용하면 손쉽게 XML형식으로 출력 가능하다.
- DomSerializer 클래스를 이용해서, Document 객체로 변환도 가능하다.
* 참고
http://htmlcleaner.sourceforge.net/
http://htmlparser.sourceforge.net/
그런데... 문제는...
프로그래밍해서 html을 분석하기에는 참 난해한것이다.
규격에 안맞다보니, 섬세하게(?) 제어할려고 하면 꽥~~하는 습성이 있는것이다.
뭐 일일이 수작업(?)으로 분석할 수는 있지만, 그건 너무 잔혹하지 않는가.
이런 고민을 한방에 해결해 줄 라이브러리가 있으니,
그건 바로 Html Cleaner!!! (http://htmlcleaner.sourceforge.net/)
이름 그대로 깔끔한 성격이라서, 매우 마음에 든다.
대상 html을 마음껏 요리할 수 있는 자체 API도 제공하고, xml로 변환하여 처리할 수도 있다.
1. 사용하기.
- 아래처럼, HtmlCleaner 인스턴스를 생성하여 clean(대상) 메소드를 실행하면 된다.
HtmlCleaner cleaner = new HtmlCleaner(); TagNode node = cleaner.clean(...);
- 반환되는 TagNode는 일반적인 DOM 방식의 Node 처럼 사용이 기능하다. (getElements...)
- Object[] evaluateXPath(String) 메소드를 이용하면 XPath형식으로 반환할 대상을 지정할 수 있다.
- 즉 아래처럼 html이 있을때,
<table> <tr> <td><a href="http://blog.kangwoo.kr">나의 블로그</td> <td align="left"><div>나는 누굴까?</div></td> </tr> <tr> <td><a href="http://blog.kangwoo.kr">너의 블로그</td> <td align="left"><div>너는 누굴까?</div></td> </tr> <tr> <td><a href="http://blog.kangwoo.kr">우리의 블로그</td> <td align="left"><div>우리는 누굴까?</div></td> </tr> </table>
"나는 누굴까?", "너는 누굴까?", "우리는 누굴까?"값만 가지고 오고 싶으면,
Object[] objArray = node.evaluateXPath("//table//tr//td[@align='left']//div"); for (Object obj: objArray) { TagNode t = (TagNode)obj; System.out.println(t.getText().toString()); }
이런씩으로 구현하면 그 대상 node만 손쉽게 가져올 수 있다.
* 참고
BaseToken + CommentToken + ContentToken + DoctypeToken + TagToken + EndTagToken + TagNode
2. 불필요한 요소 제거
-불필요한 요소를 제거 할려면, CleanerProperties 클래스의 setXXX() 메소드를 이용해서 설정해주면 된다.
HtmlCleaner cleaner = new HtmlCleaner(); CleanerProperties props = cleaner.getProperties(); props.setOmitComments(true); // 주석제거 TagNode node = cleaner.clean(...);
CleanerProperties: setAdvancedXmlEscape(boolean) |
3. XML로 만들어보기.
- XmlSerializer 를 이용하면 손쉽게 XML형식으로 출력 가능하다.
CleanerProperties props = cleaner.getProperties(); TagNode node = cleaner.clean(...); XmlSerializer xmlSerializer = new SimpleXmlSerializer(props); xmlSerializer.writeXmlToStream(node, System.out);
- DomSerializer 클래스를 이용해서, Document 객체로 변환도 가능하다.
new DomSerializer(props, true).createDOM(node);
* 참고
http://htmlcleaner.sourceforge.net/
http://htmlparser.sourceforge.net/