使用TIKA从URL中提取文本

7

是否可以使用Tika从URL中提取文本?如果有任何链接,请提供。或者TIKA只能用于PDF、Word和其他媒体文件吗?

4个回答

7

查看文档 - 是的,你可以。

例子

java -jar tika-app-0.9.jar -t https://dev59.com/olnUa4cB1Zd3GeqPXiGT

将在此页面上显示文本。


如果我需要在Java代码中使用它并将来自URL的文本保存到文本文件中,那么这也是可能的吗??而且我没有使用Maven。我想在Java代码中使用它。 - arsenal
1
如需了解如何使用Ant与Tika,请查看Maven使用说明下方的描述,位于命令行工具说明之上。如果您需要一些嵌入它的灵感,我相信网站上有相关信息,当然还可以参考命令行工具的源代码。 - fvu

6

This is from lucid:

InputStream input = new FileInputStream(new File(resourceLocation));
ContentHandler textHandler = new BodyContentHandler();
Metadata metadata = new Metadata();
PDFParser parser = new PDFParser();
parser.parse(input, textHandler, metadata);
input.close();
out.println("Title: " + metadata.get("title"));
out.println("Author: " + metadata.get("Author"));
out.println("content: " + textHandler.toString());

无需创建PDFParser,您可以使用Tika的AutoDetectParser自动处理不同类型的文件:

Parser parser = new AutoDetectParser();

3

是的,你可以这样做。以下是代码。此代码使用apache http客户端

HttpGet httpget = new HttpGet("http://url.here"); 
    HttpEntity entity = null;
    HttpClient client = new DefaultHttpClient();
    HttpResponse response = client.execute(httpget);
    entity = response.getEntity();
    if (entity != null) {
        InputStream instream = entity.getContent();
        BodyContentHandler handler = new BodyContentHandler();
        Metadata metadata = new Metadata();
        Parser parser = new AutoDetectParser();
        parser.parse( instream, handler, metadata, new ParseContext());
        String plainText = handler.toString();
        FileWriter writer = new FileWriter( "/scratch/cache/output.txt");
        writer.write( plainText );
        writer.close();
        System.out.println( "done");
    }

1

如果要从URL中提取内容而不是本地文件,请使用以下代码:

    byte[] raw = content.getContent();
    ContentHandler handler = new BodyContentHandler();
    Metadata metadata = new Metadata();
    Parser parser = new AutoDetectParser();
    parser.parse(new ByteArrayInputStream(raw), handler, metadata, new ParseContext());
    LOG.info("content: " + handler.toString());

您也可以使用TikaInputStream.get(byte[])来构建InputStream。 - Gagravarr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接