본문 바로가기
백엔드기술/개발언어

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

by RevFactory 2012. 12. 14.

 

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());
    }
}