Какой парсер HTML является лучшим? [закрытый]
я кодирую много парсеров. До сих пор я использовал HtmlUnit headless browser для парсинга и автоматизации браузера.
теперь я хочу разделить обе задачи.
поскольку 80% моей работы включает в себя только синтаксический анализ, я хочу использовать легкий HTML-парсер, потому что в HtmlUnit требуется много времени, чтобы сначала загрузить страницу, затем получить источник, а затем проанализировать его.
Я хочу знать, какой HTML-парсер является лучшим. Парсер был бы лучше, если бы он был близок к HtmlUnit синтаксический анализатор.
EDIT:
в лучшем случае, я хочу, по крайней мере, следующие функции:
- скорость
- легко найти любой HtmlElement по его "id" или "имя"или" тип тега".
Это было бы нормально для меня, если он не очищает грязный HTML-код. Мне не нужно очищать какой-либо источник HTML. Мне просто нужен самый простой способ перемещения по HtmlElements и сбора данных из них.
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