Получение элементов по типу в искаженном HTML
-
19-09-2019 - |
Вопрос
Какой самый простой способ в Java получить все элементы с определенным типом на искаженной HTML-странице?Поэтому я хочу сделать что-то вроде этого:
public static void main(String[] args) {
// Read in an HTML file from disk
// Retrieve all INPUT elements regardless of whether the HTML is well-formed
// Loop through all elements and retrieve their ids if they exist for the element
}
Решение
HTMLCleaner возможно, один из лучших анализаторов HTML, когда дело доходит до работы с (несколько) искаженным HTML.
Документация здесь с некоторыми примерами кода;вы в основном ищете getElementsByName()
метод.
Взгляни на Сравнение парсеров Java HTML если вы рассматриваете другие библиотеки.
Другие советы
Я добился успеха, используя тегисуп.Вот краткое описание с их домашней страницы:
Это домашняя страница TagSoup, SAX-совместимого парсера, написанного на Java, который вместо анализа правильно сформированного или допустимого XML анализирует HTML в том виде, в каком он встречается в природе:бедный, противный и жестокий, хотя нередко и далеко не невысокий.TagSoup предназначен для людей, которым приходится обрабатывать эти вещи, используя некое подобие рационального дизайна приложения.Предоставляя интерфейс SAX, он позволяет применять стандартные инструменты XML даже к самому худшему HTML.TagSoup также включает в себя процессор командной строки, который читает файлы HTML и может генерировать либо чистый HTML, либо правильно сформированный XML, который является близким приближением к XHTML.
Проверить Аккуратный.
JTidy - это Java-порт HTML Tidy, средство проверки синтаксиса HTML и симпатичный принтер.Как и его двоюродный брат, не относящийся к Java, JTidy может использоваться как инструмент для очистки искаженного и дефектного HTML.Кроме того, JTidy предоставляет DOM интерфейс к документу, который обрабатывается, что эффективно позволяет использовать JTidy в качестве DOM анализатора для реального HTML.