3 приклади як розібрати HTML-файл в Java використовуючи Jsoup.
3 Examples of Parsing HTML File in Java using Jsoup
Коли я зіткнувся з цим, я був впевнений що рішенням буде open-source бібліотека, що здійснює потрібну мені функціональність, але я не знав, що вона буде такою чудовою і багатофункціональної як Jsoup. Вона не тільки забезпечує підтримку читання і розбору HTML файлів, атрибутів, CSS класів в стилі JQuery, але і в той же час, дозволяє модифікувати їх. Використовуючи Jsoup Ви можете зробити з HTML документом все що завгодно.
Що таке Jsoup.
Jsoup це open-source Java бібліотека для роботи з реальним HTML. Вона забезпечує дуже зручний API для вилучення і маніпулювання даними, використовуючи кращі DOM, CSS, і JQuery-подібні методи. Jsoup реалізує WHATWG HTML5 специфікацію, і розбирає HTML в ту ж модель DOM, як це роблять сучасні браузер на кшталт Chrome і Firefox.
Ось деякі з корисних функцій Jsoup бібліотеки:
- Jsoup може очистити і розібрати HTML з URL, файлу або рядки.
- Jsoup може знайти і витягти дані використовуючи обхід DOM або CSS селектори.
- Jsoup дозволяє маніпулювати HTML елементами, атрибутами і текстом.
- Jsoup забезпечує очистку наданої користувачем інформації по white-list, для запобігання XSS атак.
- Також Jsoup видає «акуратний» HTML.
Jsoup призначений для роботи з різними видами HTML існуючими в реальному світі, включаючи належним чином підтверджений HTML c неповним непідтвердженими набором тегів. Одне з основних переваг Jsoup це його надійність.
Розбір HTML в Java використовуючи Jsoup.
У цьому підручнику ми побачимо три різних прикладу розбору і обходу HTML-документа в Java використовуючи Jsoup. У першому прикладі, ми будемо розбирати HTML рядок, що містить теги, в формі строкового литерала Java. У другому прикладі, ми скачати наш HTML-документ з Інтернет, і в третьому прикладі, ми завантажимо для розбору наш власний зразок HTML файлу login.html. Цей файл - зразок HTML документа, який складається з тега «title» і тега «div» в секції «body», який містить HTML форму. У формі знаходяться поля для введення імені користувача і пароля, а також кнопки скидання і підтвердження для подальших дій. Це «правильний» HTML, який може пройти перевірку на «валідність», тобто все теги і атрибути правильно закриті. Ось як виглядає наш HTML файл:
За допомогою Jsoup дуже просто розібрати HTML, все що Вам потрібно це викликати статичний метод Jsoup.parse () і передати в нього Вашу HTML рядок. Jsoup надає кілька перевантажених методів parse () для читання HTML з рядка, файлу, з базового URI, з URL і з InputStream. Ви також можете вказати кодування, для коректного читання HTML файлу, в разі якщо він не в форматі «UTF-8».
Метод parse (String html) розбирає що входить HTML в новий об'єкт Document. У Jsoup клас Document успадковує клас Element. який розширює клас Node. Також від класу Node успадковується клас TextNode. До тих пір, поки Ви передаєте в метод рядок відмінну від null, Ви гарантовано маєте успішний, осмислений розбір, об'єкт Document містить (по крайней мере) елементи «head» і «body». Якщо у Вас є об'єкт Document. Ви можете отримати бажані дані викликавши відповідні методи класу Document і його батьків Element і Node.
Java програма для розбору HTML документа.
Ось наша повна програма для розбору HTML-рядки, HTML-файлу, завантаженого з інтернет і локального HTML файлу. Для її запуску Ви можете використовувати IDE (Eclipse або будь-яку іншу) або командний рядок. В Eclipse це дуже легко, просто скопіюйте цей код, створіть новий Java проект, клацніть правою кнопкою миші по папці «src» і вставте скопійований код (paste). Eclipse подбає про створення належного пакету і файлу вихідного коду з відповідним ім'ям, так набагато менше роботи. Якщо у Вас вже є Java проект, тоді це лише один крок. Розташована нижче програма ілюструє три приклади розбору і обходу HTML файлу. У першому прикладі, ми безпосередньо розбираємо рядок, що містить HTML, у другому HTML-файл викачаний з URL, в третьому ми завантажуємо і розбираємо HTML-документ з локальної файлової системи.
- незакриті теги. наприклад,
- припускаються теги. Наприклад, відкриті будуть обгорнуті в
- Jsoup створює надійні структури документа (HTML містить head і body, при цьому в body тільки відповідні елементи)
Jsoup є відмінною і надійною open-source бібліотекою, яка робить читання html документа, фрагментів body, html рядків і безпосередній розбір html вмісту веб, дуже простим.