Какой парсер HTML является лучшим? [закрытый]


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

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

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

Я хочу знать, какой HTML-парсер является лучшим. Парсер был бы лучше, если бы он был близок к HtmlUnit синтаксический анализатор.


EDIT:

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

  1. скорость
  2. легко найти любой HtmlElement по его "id" или "имя"или" тип тега".

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

3 173

3 ответа:

Self plug: я только что выпустил новый Java HTML parser: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 ' s parser, на основе алгоритма синтаксического анализа HTML5. это парсер, используемый в Mozilla с 2010-05-03