Parsing de HTML em Java: visão geral das bibliotecas Jsoup e HtmlUnit
Parsing de HTML (ou web scraping) é o processo de extrair dados de documentos HTML. Em Java, existem várias bibliotecas poderosas para essa tarefa, entre as quais se destacam Jsoup (para HTML estático) e HtmlUnit (para páginas dinâmicas com JavaScript). Neste artigo, vamos analisar detalhadamente ambas as bibliotecas, mostrar exemplos de código e ajudar você a escolher a ferramenta adequada para o seu projeto no pythonlib.ru.
O que é Jsoup?
Jsoup é uma biblioteca leve para parsing, extração e manipulação de documentos HTML. Ela suporta seletores CSS, o que a torna intuitiva para desenvolvedores web. O Jsoup funciona com qualquer HTML, mesmo que esteja mal formatado.
Instalação do Jsoup
Adicione a dependência ao seu pom.xml (Maven):
<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.17.2</version></dependency>Exemplo de parsing com Jsoup
Vamos considerar um exemplo básico — obter o título da página e todos os links:
import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements;
public class JsoupExample { public static void main(String[] args) throws Exception { // 1. Carregamos o documento HTML Document doc = Jsoup.connect("https://example.com").get();
// 2. Extraímos o título da página String title = doc.title(); System.out.println("Título: " + title);
// 3. Encontramos todos os links (tags <a>) Elements links = doc.select("a[href]"); for (Element link : links) { String href = link.attr("href"); String text = link.text(); System.out.println("Link: " + href + " — texto: " + text); }
// 4. Extraímos o texto de um bloco específico (por exemplo, <div class="content">) Element content = doc.selectFirst("div.content"); if (content != null) { System.out.println("Conteúdo do bloco: " + content.text()); } }}Neste exemplo, Jsoup.connect() faz uma requisição HTTP, e select() usa seletores CSS para encontrar elementos. O Jsoup também pode trabalhar com arquivos locais e strings HTML.
O que é HtmlUnit?
HtmlUnit é um navegador headless em Java. Ele não apenas faz parsing de HTML, mas também executa JavaScript, processa requisições AJAX e emula ações do usuário. É a escolha ideal para sites onde o conteúdo é carregado dinamicamente.
Instalação do HtmlUnit
<dependency> <groupId>net.sourceforge.htmlunit</groupId> <artifactId>htmlunit</artifactId> <version>2.70.0</version></dependency>Exemplo de parsing com HtmlUnit
Parsing de uma página que carrega dados via JavaScript:
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 { // 1. Criamos um WebClient (análogo a um navegador) try (WebClient webClient = new WebClient()) { // Desabilitamos CSS e logging para acelerar webClient.getOptions().setCssEnabled(false); webClient.getOptions().setJavaScriptEnabled(true); webClient.getOptions().setThrowExceptionOnScriptError(false);
// 2. Carregamos a página (o JavaScript será executado automaticamente) HtmlPage page = webClient.getPage("https://example.com/dynamic");
// 3. Aguardamos, p Também na biblioteca
Rate Limiting em Go (Golang): bibliotecas, padrões e exemplos de implementação
golangci-lint para Go: guia completo com exemplos práticos
Criptografia em Node.js: criptografia e hash com crypto
Geração de PDF em C# (.NET): melhores bibliotecas e exemplos de código
iText 7 para Java: guia completo com exemplos práticos