백엔드기술/개발언어

Tika 소개 - 유용한 Parser 라이브러리

RevFactory 2012. 12. 14. 13:36

 

XML 파서에 대해 검색하다가

괜찮은 라이브러리를 하나 발견했다.

 

라이브러리의 시작은 어떤 파일이든 포함된 컨텐츠를 추출해내는 것이 목표였다고 한다.

현재는 루씬 검색엔진 에서 파일 필터로 쓰이고 있는듯..

 

 

http://tika.apache.org/

 

 

기본 파싱방법은 (파일스트림, 핸들러, 메타데이터, 컨텍스트 객체) 이 4가지를 넣고 parse 를 돌리는 식이다.

 

 

아래는 HTML 을 파싱하는 간단한 예제이다.

 

package tikatest;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.html.HtmlParser;
import org.apache.tika.sax.BodyContentHandler;
import org.apache.tika.sax.LinkContentHandler;
import org.apache.tika.sax.TeeContentHandler;
import org.apache.tika.sax.ToHTMLContentHandler;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;

/**
 *
 * @author revfactory
 */
public class TikaTest {

    public static void main(String[] args) throws FileNotFoundException, SAXException, IOException, TikaException {
        URL url = new URL("http://www.naver.com/");
         InputStream input = url.openStream();
         LinkContentHandler linkHandler = new LinkContentHandler();
         ContentHandler textHandler = new BodyContentHandler();
         ToHTMLContentHandler toHTMLHandler = new ToHTMLContentHandler();
         TeeContentHandler teeHandler = new TeeContentHandler(linkHandler, textHandler, toHTMLHandler);
         Metadata metadata = new Metadata();
         ParseContext parseContext = new ParseContext();
         HtmlParser parser = new HtmlParser();
         parser.parse(input, teeHandler, metadata, parseContext);
         System.out.println("title:\n" + metadata.get("title"));
         System.out.println("links:\n" + linkHandler.getLinks());
         System.out.println("text:\n" + textHandler.toString());
         System.out.println("html:\n" + toHTMLHandler.toString());
    }
}