Какой HTML Parser лучший?
Я кодирую много парсеров. До сих пор я использовал безголовый браузер HtmlUnit для анализа и автоматизации браузера.
Теперь я хочу разделить обе задачи.
Поскольку 80% моей работы связаны с простым анализом, я хочу использовать легкий анализатор HTML, потому что в HtmlUnit требуется много времени, чтобы сначала загрузить страницу, затем получить исходный код и затем проанализировать его.
Я хочу знать, какой HTML-парсер лучший. Анализатор будет лучше, если он будет близок к анализатору HtmlUnit.
РЕДАКТИРОВАТЬ:
В лучшем случае я хочу по крайней мере следующие функции:
- скорость
- Легко найти любой 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