Java-библиотека с открытым исходным кодом для преобразования HTML в текст - PullRequest
20 голосов
/ 05 октября 2009

Можете ли вы порекомендовать библиотеку Java с открытым исходным кодом (предпочтительно, лицензию ASL / BSD / LGPL), которая преобразует HTML в обычный текст - очищает все теги, преобразует объекты (&, и т. Д.) И обрабатывает
и таблицы правильно.

Подробнее

У меня есть HTML в виде строки, нет необходимости извлекать его из Интернета. Кроме того, я ищу такой метод:

String convertHtmlToPlainText(String html)

Ответы [ 5 ]

19 голосов
/ 05 октября 2009

Попробуйте Иерихон .

Класс TextExtractor звучит так, как будто он будет делать то, что вы хотите. Извините, я не могу опубликовать вторую ссылку, так как я новый пользователь, но немного прокрутите вниз домашнюю страницу, и на нее есть ссылка.

3 голосов
/ 05 октября 2009

HtmlUnit , даже показывает страницу после обработки JavaScript / Ajax.

2 голосов
/ 03 апреля 2016

Двигатель блики может сделать это в два этапа. См. info.bliki.wiki / Home

  1. Как преобразовать HTML в текст Mediawiki - текст nediawiki уже довольно простой текстовый формат, но вы можете преобразовать его дальше
  2. Как преобразовать текст Mediawiki в обычный текст - ваша цель.

Это будет примерно 7-8 строк кода, например:

// html to wiki
import info.bliki.html.HTML2WikiConverter;
import info.bliki.html.wikipedia.ToWikipedia;
// wiki to plain text
import info.bliki.wiki.filter.PlainTextConverter;
import info.bliki.wiki.model.WikiModel;
...
String sbodyhtml = readFile( infilepath ); //get content as string
  HTML2WikiConverter conv = new HTML2WikiConverter();
  conv.setInputHTML( sbodyhtml );
String resultwiki = conv.toWiki(new ToWikipedia());
  WikiModel wikiModel = new WikiModel("${image}", "${title}");
String plainStr = wikiModel.render(new PlainTextConverter(false), resultwiki );
System.out.println( plainStr );

Jsoup может сделать это проще:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
...
Document doc = Jsoup.parse(sbodyhtml);
String plainStr = doc.body().text();

но в результате вы потеряете все форматирование абзаца - новых строк не будет.

0 голосов
/ 26 февраля 2013

Я использовал Apache Commons Lang , чтобы пойти другим путем. Но похоже, что он может делать то, что вам нужно, через StringEscapeUtils .

0 голосов
/ 05 октября 2009

Я использую TagSoup , он доступен для нескольких языков и отлично справляется с HTML, найденным «в дикой природе». Он создает очищенную версию HTML или XML, которую затем можно обработать с помощью некоторого анализатора DOM / SAX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...