Какой HTML Parser лучший?

Я кодирую много парсеров. До сих пор я использовал безголовый браузер HtmlUnit для анализа и автоматизации браузера.

Теперь я хочу разделить обе задачи.

Поскольку 80% моей работы связаны с простым анализом, я хочу использовать легкий анализатор HTML, потому что в HtmlUnit требуется много времени, чтобы сначала загрузить страницу, затем получить исходный код и затем проанализировать его.

Я хочу знать, какой HTML-парсер лучший. Анализатор будет лучше, если он будет близок к анализатору HtmlUnit.


РЕДАКТИРОВАТЬ:

В лучшем случае я хочу по крайней мере следующие функции:

  1. скорость
  2. Легко найти любой HtmlElement по его "id" или "name" или "type tag".

Было бы хорошо, если бы он не очищал грязный HTML-код. Мне не нужно чистить любой источник HTML. Мне просто нужен самый простой способ перемещаться по элементам HtmlElements и собирать с них данные.

3 ответа

Решение

Self plug: Я только что выпустил новый анализатор Java HTML: jsoup. Я упоминаю об этом здесь, потому что я думаю, что он будет делать то, что вы после.

Его трюк с партией - это синтаксис селектора CSS для поиска элементов, например:

String html = "<html><head><title>First parse</title></head>"
  + "<body><p>Parsed HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);
Elements links = doc.select("a");
Element head = doc.select("head").first();

См. Селектор Javadoc для получения дополнительной информации.

Это новый проект, поэтому любые идеи по улучшению приветствуются!

Лучшее, что я видел до сих пор, это HtmlCleaner:

HtmlCleaner - это анализатор HTML с открытым исходным кодом, написанный на Java. HTML в Интернете обычно грязный, плохо сформирован и не подходит для дальнейшей обработки. Для любого серьезного потребления таких документов, необходимо сначала навести порядок и навести порядок в тегах, атрибутах и ​​обычном тексте. Для данного HTML-документа HtmlCleaner переупорядочивает отдельные элементы и создает правильно сформированный XML. По умолчанию он следует аналогичным правилам, которые большинство веб-браузеров используют для создания объектной модели документа. Однако пользователь может предоставить пользовательский тег и набор правил для фильтрации и балансировки тегов.

С HtmlCleaner вы можете найти любой элемент, используя XPath.

Другие html-парсеры см. В этом вопросе.

Я предлагаю парсер Validator.nu, основанный на алгоритме парсинга HTML5. Это парсер, используемый в Mozilla с 2010-05-03

Другие вопросы по тегам