it-roy-ru.com

Какой HTML парсер самый лучший?

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

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

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

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


EDIT:

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

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

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

185
Yatendra Goel

Автономный модуль: я только что выпустил новый 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 для получения дополнительной информации.

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

382
Jonathan Hedley

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

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

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

Для других html-парсеров смотрите этот вопрос SO .

32
tangens

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

9
Ms2ger