Análise de HTML em Java: visão geral das bibliotecas e exemplos práticos
A análise de HTML (extração de dados de páginas web) é uma das tarefas principais no desenvolvimento moderno. Java oferece ferramentas poderosas para esse fim. Neste artigo, abordaremos três bibliotecas populares: Jsoup, HtmlUnit e Apache Tika. Você aprenderá como instalá-las, quais problemas elas resolvem e verá exemplos de código funcionais.
Por que a análise de HTML é necessária?
A análise de HTML é usada para:
- Coletar dados de sites (preços, notícias, contatos).
- Testar aplicações web (extração de elementos da interface).
- Automatizar operações rotineiras (preenchimento de formulários, verificação de links).
- Analisar a estrutura SEO de sites.
1. Jsoup — o parser HTML mais popular para Java
Jsoup é uma biblioteca leve e intuitiva para trabalhar com HTML. Ela é capaz de carregar páginas, analisá-las, extrair dados usando seletores CSS e métodos semelhantes ao jQuery. O Jsoup corrige automaticamente marcações incorretas, tornando-o ideal para análise de sites reais.
Instalação (Maven)
<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.17.2</version></dependency>Exemplo: extração de títulos de todas as notícias
Suponha que precisamos obter todos os títulos de artigos de um portal de notícias. Usamos o seletor CSS h2.news-title.
import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.select.Elements;
public class JsoupExample { public static void main(String[] args) throws Exception { // Carregamos a página HTML Document doc = Jsoup.connect("https://example.com/news") .userAgent("Mozilla/5.0") .timeout(5000) .get();
// Extraímos todos os elementos h2 com a classe "news-title" Elements titles = doc.select("h2.news-title");
// Exibimos o texto de cada título for (var title : titles) { System.out.println(title.text()); } }}Características do Jsoup:
- Funciona sem navegador, apenas com requisições HTTP.
- Suporte a seletores CSS (como no jQuery).
- Possibilidade de manipulação do DOM (adição, remoção de elementos).
- Não executa JavaScript.
2. HtmlUnit — análise com suporte a JavaScript
HtmlUnit é um emulador de navegador em Java. Ele não apenas analisa HTML, mas processa completamente a página: executa JavaScript, carrega CSS, lida com requisições AJAX. Ideal para sites SPA modernos (React, Angular).
Instalação (Maven)
<dependency> <groupId>net.sourceforge.htmlunit</groupId> <artifactId>htmlunit</artifactId> <version>2.70.0</version></dependency>Exemplo: obtenção de dados após o carregamento de JavaScript
Suponha que na página haja um bloco dinâmico que aparece 2 segundos após o carregamento. O HtmlUnit aguardará por ele.
import com.gargoylesoftware.htmlunit.WebClient;import com.gargoylesoftware.htmlunit.html.HtmlPage;import com.gargoylesoftware.htmlunit.html.HtmlElement;
public class HtmlUnitExample { public static void main(String[] args) throws Exception { try (WebClient webClient = new WebClient()) { // Desativamos CSS e logging para velocidade webClient.getOptions().setCssEnabled(false); webClient.getOptions().setJavaScriptEnabled(true);
// Carregamos a página HtmlPage page = webClient.getPage("https://example.com/dynamic");