2012-02-07 108 views
3

Apache Tika的GUI實用程序提供了獲取給定文檔或URL的主要內容(格式文本和結構化文本除外)的選項。我只想知道哪個方法負責提取文檔/網址的主要內容。以便我可以將該方法合併到我的程序中。此外,他們是否在從HTML頁面提取數據時使用任何啓發式算法。因爲有時在提取的內容中,我無法看到廣告。我們發現BoilerPipeContentHandler負責它。Tika - 從文檔檢索主要內容

+0

在下面的問題中提供了一個解決方案,使用boilerpipe。 http://stackoverflow.com/questions/42589076/apache-tika-how-to-extract-html-body-with-out-header-and-footer-content – 2017-03-08 04:33:45

回答

7

Tika GUI中的「主要內容」功能是使用BoilerpipeContentHandler類實現的,該類依靠boilerpipe library進行繁重工作。

+0

它只能用於HTML頁面或全部。因爲從Boilerpipe文檔中,我可以看到它主要僅支持HTML頁面。 – Allwyn 2012-02-09 04:22:26

+0

也可以幫助告訴我如何控制Tika輸出中的空格和換行符。因爲tika的輸出包含更多的空格和換行符 – Allwyn 2012-02-09 04:32:32

0

我相信這是由BodyContentHandler驅動的,它只提取文檔正文的HTML內容。如果需要,這可以另外與其他處理程序組合以僅返回主體的純文本。

+0

我試過了,但它不能提取主要內容。 – Allwyn 2012-02-08 05:05:01

+0

它適用於所有的單元測試...我建議你看看它是如何使用的,並將其與你的使用進行比較 – Gagravarr 2012-02-08 12:37:20

+0

@Gagravarr「主要內容」是純文本,帶有剝離的樣板文件(嘗試實驗用Tika gui來看看它是什麼)。 – 2014-04-27 21:07:26

0
public String[] tika_autoParser() { 
    String[] result = new String[3]; 
    try { 
     InputStream input = new FileInputStream(new File(path)); 
     ContentHandler textHandler = new BodyContentHandler(); 
     Metadata metadata = new Metadata(); 
     AutoDetectParser parser = new AutoDetectParser(); 
     ParseContext context = new ParseContext(); 
     parser.parse(input, textHandler, metadata, context); 
     result[0] = "Title: " + metadata.get(metadata.TITLE); 
     result[1] = "Body: " + textHandler.toString(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (SAXException e) { 
     e.printStackTrace(); 
    } catch (TikaException e) { 
     e.printStackTrace(); 
    } 

    return result; 
}