Parsing de HTML em Java: visão geral das bibliotecas e ferramentas
Parsing de HTML é o processo de extração de dados estruturados de documentos HTML. Em Java, existem várias bibliotecas poderosas para essa tarefa, que permitem não apenas analisar páginas estáticas, mas também processar conteúdo dinâmico. Neste artigo, veremos três das ferramentas mais populares: Jsoup, HtmlUnit e Jericho HTML Parser. Cada uma delas tem suas próprias características e áreas de aplicação.
1. Jsoup — parser HTML universal
Jsoup é a biblioteca Java mais popular para trabalhar com HTML. Ela fornece uma API conveniente para carregar, analisar e extrair dados, além de suportar seletores CSS e manipulações da árvore DOM. O Jsoup é ideal para páginas estáticas e tarefas simples de web scraping.
Principais recursos:
- Carregamento de HTML a partir de URL, arquivo ou string
- Extração de dados usando seletores CSS
- Limpeza de HTML removendo tags indesejadas
- Modificação do DOM (adição/remoção de elementos)
- Correção automática de HTML inválido
Exemplo de código: extraindo títulos de notícias
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 { // Carregar a página HTML Document doc = Jsoup.connect("https://example.com/news") .userAgent("Mozilla/5.0") .timeout(5000) .get(); // Extrair todos os títulos h2 com a classe "news-title" Elements titles = doc.select("h2.news-title"); // Exibir o texto de cada título titles.forEach(title -> System.out.println(title.text())); }}2. HtmlUnit — parsing com suporte a JavaScript
HtmlUnit é um navegador headless em Java que emula o funcionamento de um navegador web. Diferente do Jsoup, ele executa código JavaScript, processa requisições AJAX e suporta cookies. É uma ferramenta indispensável para parsing de aplicações SPA modernas e sites com conteúdo dinâmico.
Principais características:
- Emulação completa do navegador (Chrome, Firefox, IE)
- Execução de JavaScript (incluindo jQuery e React)
- Suporte a formulários, cliques e navegação entre páginas
- Trabalho com cookies, sessões e redirecionamentos
- Suporte integrado a XPath e seletores CSS
Exemplo de código: aguardando carregamento de conteúdo dinâmico
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()) { // Desabilitar logs e timeouts webClient.getOptions().setThrowExceptionOnScriptError(false); webClient.getOptions().setJavaScriptEnabled(true); // Carregar a página HtmlPage page = webClient.getPage("https://example.com/dynamic"); // Aguardar 2 segundos para execução do JS webClient.waitForBackgroundJavaScript(2000); // Extrair dados por XPath HtmlElement element = page.getFirstByXPath("//div[@class='result']/p"); System.out.println("Resultado: " + element.getTextContent()); } }}3. Jericho HTML Parser — leve e rápido
Jericho HTML Parser é uma biblioteca leve com dependências mínimas. Ela lida muito bem com parsing de HTML inválido e fornece acesso de baixo nível à estrutura do documento.
Também na biblioteca
Filas de Tarefas para C++: Implementação e Uso
Agendador de Tarefas Java: Quartz Scheduler — Guia Completo
Trabalho com datas em Kotlin: bibliotecas e ferramentas para desenvolvimento
Tokens JWT em C++: biblioteca jwt-cpp para autenticação
Programação Reativa em JavaScript (Node.js): biblioteca RxJS