Java:
Разбор HTML

Как это сделать:

Давайте воспользуемся Jsoup, удобной библиотекой для работы с реальным HTML. Сначала добавим зависимость:

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.15.2</version>
</dependency>

Теперь перейдем к интересной части. Вот как получить заголовок веб-страницы и вывести его:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class HtmlParser {
    public static void main(String[] args) throws IOException {
        String url = "http://example.com";
        Document doc = Jsoup.connect(url).get();
        String title = doc.title();
        System.out.println("Заголовок: " + title);
    }
}

Вывод:

Заголовок: Пример Домена

Как насчет извлечения всех ссылок?

import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

// ... внутри main или другого метода
Elements links = doc.select("a[href]");
for (Element link : links) {
    System.out.println("Ссылка: " + link.attr("href"));
}

Глубокое погружение

Когда-то HTML был укрощен с помощью регулярных выражений, метода, полного ошибок и кошмарного для сложных документов. На смену пришел Jsoup в конце нулевых, предоставив интерфейс похожий на jQuery для Java, чтобы парсить, переходить и манипулировать HTML.

Jsoup не единственный выбор. Есть HtmlUnit для полноценного тестирования веб-приложений с поддержкой JavaScript, но он более тяжеловесный и сложный. Для легковесных задач отлично подходит Apache Commons Validator, прекрасный инструмент исключительно для извлечения URL.

Под капотом Jsoup использует DOM-парсер, который моделирует весь документ в памяти как дерево. Этот подход облегчает выбор и навигацию по структуре HTML. К тому же он снисходителен к небрежному HTML, исправляя проблемы на лету, чтобы обеспечить надежный парсинг.

Помните, при скрапинге всегда проверяйте файл robots.txt и условия предоставления услуг сайта, чтобы избежать юридических проблем или блокировки по IP.

Смотрите также