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 | Открытый исходный код .NET API для создания и изменения файлов DOCX
- Docx4J | Открытый исходный код Java API для создания и изменения файлов DOC и DOCX
- ExcelDataReader | API .NET с открытым исходным кодом для чтения документов XLS, XLSX, CSV и электронных таблиц
- FileFormat.Cells | Создание и обновление файлов Excel с помощью C# .NET