Получение элементов по типу в искаженном HTML - PullRequest
0 голосов
/ 11 ноября 2009

Какой самый простой способ в 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
}

Ответы [ 3 ]

2 голосов
/ 11 ноября 2009

HtmlCleaner , пожалуй, один из лучших анализаторов HTML, когда дело доходит до работы с (несколько) искаженным HTML.

Документация здесь с некоторыми примерами кода; Вы в основном ищете getElementsByName() метод.

Взгляните на Сравнение парсеров Java HTML , если вы рассматриваете другие библиотеки.

1 голос
/ 11 ноября 2009

Я успешно использовал tagoup . Вот краткое описание с их домашней страницы:

Это домашняя страница TagSoup, SAX-совместимого синтаксического анализатора, написанного на Java, который вместо синтаксического анализа правильно сформированного или корректного XML анализирует HTML, как он встречается в дикой природе: плохой, неприятный и грубый, хотя довольно часто далеко не короче. TagSoup предназначен для людей, которые должны обрабатывать эти вещи, используя некое подобие рационального дизайна приложения. Предоставляя интерфейс SAX, он позволяет применять стандартные инструменты XML даже к худшему HTML. TagSoup также включает в себя процессор командной строки, который читает файлы HTML и может генерировать либо чистый HTML, либо правильно сформированный XML, близкий к XHTML.

0 голосов
/ 11 ноября 2009

Чек Jtidy .

JTidy - это Java-порт HTML Tidy, Проверка синтаксиса HTML и довольно принтер. Как и его двоюродный брат не из Java, JTidy можно использовать как инструмент для очистка искаженного и неисправного HTML. Кроме того, JTidy предоставляет DOM интерфейс к документу, который является обрабатывается, который эффективно позволяет использовать JTidy в качестве DOM парсер для реального HTML.

...