2012-02-07 2 views
3

Утилита GUI Apache Tika предоставляет возможность получения основного контента (кроме текста форматирования и структурированного текста) данного документа или URL-адреса. Я просто хочу знать, какой метод отвечает за извлечение основного содержимого документа/url. Чтобы я мог включить этот метод в свою программу. Также, используют ли они какой-либо эвристический алгоритм при извлечении данных из HTML-страниц. Потому что иногда в извлеченном контенте я не могу видеть рекламу.Tika - получение основного содержимого из документов

UPDATE: я узнал, что BoilerPipeContentHandler отвечает за него.

+0

Предоставлено решение usin-котла по указанному ниже вопросу. http://stackoverflow.com/questions/42589076/apache-tika-how-to-extract-html-body-with-out-header-and-footer-content –

ответ

7

Функция «основного контента» в графическом интерфейсе Tika реализована с использованием класса BoilerpipeContentHandler, который полагается на boilerpipe library для тяжелого подъема.

+0

будет работать только для HTML-страниц или всего. Потому что из документов Boilerpipe я вижу, что в основном поддерживаются только HTML-страницы. – Allwyn

+0

Также вы можете помочь мне рассказать, как контролировать пробелы и новую строку в выходе Tika. Поскольку выход тики содержит больше пробелов и символов новой строки – Allwyn

0

Я полагаю, что это питание от BodyContentHandler, которое извлекает только содержимое HTML-документа в теле документа. Это может быть дополнительно объединено с другими обработчиками, чтобы вернуть только обычный текст тела, если это необходимо.

+0

Я пробовал, но он не может извлечь основной содержание. – Allwyn

+0

Он работает во всех модульных тестах ... Я бы посоветовал вам взглянуть на то, как он используется в них, и сравнить его с вашим использованием. – Gagravarr

+0

@Gagravarr «Основное содержание» - это простой текст с разделенным шаблоном (попробуйте экспериментировать с Tika gui, чтобы посмотреть, что это такое). –

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