Parsing de HTML em PHP: visão geral das bibliotecas e ferramentas
O parsing de HTML é uma das tarefas essenciais no desenvolvimento de aplicações web, coleta de dados ou integração com serviços externos. O PHP, sendo uma linguagem do lado do servidor, oferece tanto recursos nativos quanto poderosas bibliotecas de terceiros para extrair informações de documentos HTML. Neste artigo, vamos explorar detalhadamente três abordagens principais para parsing de HTML em PHP, suas capacidades, vantagens e particularidades de uso.
1. Extensão nativa DOMDocument
DOMDocument é uma extensão nativa do PHP que fornece um conjunto completo de ferramentas para trabalhar com documentos HTML e XML. Ela é baseada no modelo padrão DOM (Document Object Model) e permite não apenas fazer parsing, mas também modificar a estrutura do documento.
Principais funcionalidades:
- Carregar HTML a partir de uma string ou arquivo
- Navegar pela árvore de elementos usando XPath
- Alterar, adicionar e remover nós
- Validação e normalização de HTML
Exemplo de uso:
<?php// Criamos um DOMDocument e carregamos o HTML$dom = new DOMDocument();libxml_use_internal_errors(true); // Desativamos erros para HTML incorreto$dom->loadHTML('<html><body><div class="content">Olá, mundo!</div></body></html>');libxml_clear_errors();
// Usamos XPath para buscar elementos$xpath = new DOMXPath($dom);$elements = $xpath->query("//div[@class='content']");
foreach ($elements as $element) { echo $element->nodeValue; // Exibirá: Olá, mundo!}?>Vantagens: não requer instalação de bibliotecas adicionais, alta performance, controle total sobre o documento.
Desvantagens: sintaxe complexa para tarefas simples, trabalho complicado com HTML incorreto (requer configuração do libxml).
2. Biblioteca Simple HTML DOM
Simple HTML DOM é uma biblioteca popular de terceiros que simplifica significativamente o parsing de HTML. Ela oferece uma sintaxe conveniente semelhante ao jQuery para buscar e extrair dados.
Instalação:
composer require simplehtmldom/simplehtmldomExemplo de uso:
<?phprequire_once 'vendor/autoload.php';
use simplehtmldom\\HtmlWeb;
// Carregamos HTML a partir de uma URL$client = new HtmlWeb();$html = $client->load('https://example.com');
// Busca de todos os links$links = $html->find('a');foreach ($links as $link) { echo $link->href . ' - ' . $link->plaintext . "";}
// Busca por classe CSS$items = $html->find('.product-price');foreach ($items as $item) { echo $item->plaintext . "";}?>Principais métodos:
find()— busca de elementos por seletor CSSgetElementById()— obtenção de elemento por IDgetElementsByTagName()— obtenção de elementos por taginnertexteplaintext— obtenção do conteúdo textual
Vantagens: sintaxe simples e intuitiva, boa documentação, suporte a seletores CSS.
Desvantagens: mais lenta que o DOMDocument nativo, não é atualizada há muito tempo (última versão de 2019).
3. Symfony DomCrawler
DomCrawler é um componente do framework Symfony que fornece ferramentas poderosas para navegar em documentos HTML e XML. Ele é ativamente mantido e utilizado em projetos PHP modernos.
Instalação:
composer require symfony/dom-crawler symfony/css-selectorExemplo de uso:
<?phprequire_once 'vendor/autoload.php';
use Symfony\\Component\\DomCrawler\\Crawler;
// Criamos um crawler e carregamos o HTML$html = '<html><body><div class="article"><h2 Também na biblioteca
Cliente OAuth para Kotlin: integração com provedores via ktor-client e kotlinx-serialization
Geração de relatórios PDF em JavaScript (Node.js): Puppeteer, PDFKit, jsPDF
Cache em Kotlin: Redis e outras soluções
GraphQL em PHP: biblioteca webonyx/graphql-php para criação de APIs
Passport.js para JavaScript (Node.js): guia completo com exemplos