【问题标题】:Extract the text from URLs using TIKA使用 TIKA 从 URL 中提取文本
【发布时间】:2011-10-03 03:58:58
【问题描述】:

是否可以使用 Tika 从 URL 中提取文本?任何链接将不胜感激。或者 TIKA 只能用于 pdf、word 和任何其他媒体文档?

【问题讨论】:

    标签: java apache-tika


    【解决方案1】:

    检查documentation - 是的,你可以。

    例子

    java -jar tika-app-0.9.jar -t http://stackoverflow.com/questions/6656849/extract-the-text-from-url-using-tika
    

    将显示此页面上的文本。

    【讨论】:

    • 如果我需要在 Java 代码中使用它并将来自 url 的文本保存在文本文件中.. 那么它也是可能的..??而且我没有使用 Maven。我想在java代码中使用它..
    • 关于如何将 tika 与 ant 一起使用的描述就在如何与 Maven 一起使用的描述的下方,并且就在命令行工具的说明上方。如果你需要一些关于如何嵌入它的灵感,我确信网站上有信息,并且总是有命令行工具的来源。
    【解决方案2】:

    这是来自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());
    

    您可以使用 Tika 的 AutoDetectParser 来自动处理不同类型的文件,而不是创建 PDFParser

    Parser parser = new AutoDetectParser();
    

    【讨论】:

      【解决方案3】:

      是的,你可以这样做。这是代码。此代码使用 apache http client

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

      【讨论】:

        【解决方案4】:

        要从 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
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多