jsoup: HTML-парсер для Java
Збирайте, очищуйте та маніпулюйте HTML з простотою jQuery у Java
Що таке jsoup?
jsoup - це легка, але потужна бібліотека Java, розроблена для роботи з реальним HTML. Вона надає зручний API для парсингу HTML з URL, файлів або рядків, видобутку та маніпуляції даними з використанням обходу DOM, CSS-селекторів та сучасних методів HTML5. Ідеально підходить для веб-скрапінгу, видобутку даних та очищення HTML, jsoup коректно обробляє некоректну розмітку - так само, як браузер.
На відміну від підходів з використанням чистих регулярних виразів, jsoup пропонує чисту об'єктну модель з методами, натхненними jQuery, спрощуючи такі завдання, як відправка форм, модифікація атрибутів та видобуток тексту. Не має залежностей і поширюється під ліцензією MIT, що робить її улюбленим інструментом Java-розробників для надійної обробки HTML.
Ключові переваги jsoup:
- Обробка реального HTML: Парсить "брудний" HTML як браузер
- jQuery-подібний синтаксис: Знайомі CSS-селектори (напр.
doc.select("div.content")
) - Зручність для скрапінгу: Слідує за редіректами, працює з куками та відправляє форми
- Крос-платформенність: Чиста Java без нативних залежностей
- Безпека: Вбудований захист від XSS та очищення HTML
Ідеально підходить для збору даних, веб-автоматизації та аналізу контенту.
Чому варто обрати jsoup?
- Простота: Інтуїтивний API з підтримкою CSS-селекторів
- Надійність: Активно підтримується з 2009 року
- Продуктивність: Оптимізовано для потокової обробки та великих документів
- Гнучкість: Працює з фрагментами, файлами або прямими URL
- Чистий вивід: Гарне форматування та переформатування HTML
Встановлення
Додайте jsoup через Maven або Gradle:
Maven
org.jsoup
jsoup
1.17.2
Gradle
implementation 'org.jsoup:jsoup:1.17.2'
Системні вимоги: Java 8+
Приклади коду
Практичні приклади використання jsoup:
Приклад 1: Парсинг документа з рядка
Якщо у вас є HTML у рядку Java і ви хочете розпарсити його для отримання вмісту або зміни, jsoup може зробити це лише кількома рядками коду.
Метод parse(String html, String baseUri)
перетворює вхідний HTML у новий Документ. Параметр baseUri
допомагає перетворювати відносні URL у абсолютні і повинен відповідати URL, з якого було отримано документ. Якщо це не важливо або якщо HTML містить елемент <base>
, ви можете використовувати простіший метод parse(String html)
.
Приклад 2: Використання CSS-селекторів для пошуку елементів
Ви хочете знайти або змінити елементи за допомогою CSS-селекторів. Розпарсіть і змініть HTML-рядок напряму:
Приклад 3: Зміна HTML елемента
Вам потрібно змінити HTML елемента. Використовуйте методи-сетери HTML у Element, як показано у наступному прикладі коду.
Розширені можливості
jsoup підтримує професійну обробку HTML:
- Обробка форм: Надсилання POST-даних:
Надсилання форми
Connection.Response res = Jsoup.connect("https://example.com/login") .data("username", "user", "password", "pass") .method(Connection.Method.POST) .execute(); Document dashboard = res.parse();
- Підтримка проксі: Скрапінг через проксі:
Налаштування проксі
Document doc = Jsoup.connect("https://target.com") .proxy("127.0.0.1", 8080) .get();
- Маніпуляції з DOM: Зміна структури HTML:
Зміни DOM
doc.select("div.ads").remove(); // Видалити всі рекламні блоки doc.select("h1").attr("class", "header"); // Додати CSS-клас
jsoup vs HTMLUnit
Ключові відмінності:
- Фокус: jsoup парсить статичний HTML; HTMLUnit імітує браузери (виконує JavaScript)
- Швидкість: jsoup швидший для чистого парсингу HTML
- Стиль API: jsoup використовує CSS-селектори; HTMLUnit імітує Selenium
- Сценарії використання: jsoup для скрапінгу; HTMLUnit для тестування динамічних сторінок
- Залежності: jsoup не має; HTMLUnit вимагає додаткових бібліотек
Висновок
jsoup - це ідеальний набір інструментів для роботи з HTML у Java. Підходить для:
- Веб-скрапінгу: Видобутку даних з будь-яких сайтів
- Очищення даних: Санітації та нормалізації HTML
- Аналізу контенту: Парсингу RSS-стрічок або веб-архівів
- Тестування: Перевірки HTML-структури у додатках
З ліцензією MIT та інтуїтивним API, jsoup - найкращий вибір для Java-обробки HTML.
Подібні Продукти
- Apache POI XWPF | Java API з відкритим кодом для створення та зміни файлів DOCX
- DocX | Open Source .NET API для створення та зміни файлів DOCX
- Docx4J | Java API з відкритим вихідним кодом для створення та зміни файлів DOC і DOCX
- ExcelDataReader | Open Source .NET API для читання документів XLS, XLSX, CSV і електронних таблиць
- FileFormat.Cells | Створення та оновлення файлів Excel за допомогою C# .NET