Parsing de HTML em PHP: visão geral de bibliotecas e ferramentas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Parsing de HTML em PHP: visão geral de bibliotecas e ferramentas



O parsing de HTML é uma das tarefas frequentes de um desenvolvedor web. Seja para extrair dados de um site de terceiros (scraping), analisar suas próprias páginas ou automatizar testes — não se pode prescindir de uma ferramenta confiável. O PHP, como linguagem de servidor, oferece várias maneiras de trabalhar com código HTML. Neste artigo, analisaremos as três bibliotecas mais populares: PHP Simple HTML DOM Parser, DiDOM e Symfony DomCrawler. Você conhecerá seus recursos, pontos fortes e fracos, além de ver exemplos de código.



Para que serve o parsing de HTML?

As funções nativas do PHP (file_get_contents, preg_match) são muito primitivas para tarefas complexas. Expressões regulares rapidamente se tornam complicadas e quebram com a menor alteração na estrutura do HTML. Bibliotecas especializadas permitem:

  • Acessar elementos através de seletores CSS ou XPath;
  • Navegar pela árvore DOM como em JavaScript;
  • Extrair texto, atributos, links;
  • Modificar HTML e salvar o resultado.


1. PHP Simple HTML DOM Parser

Uma das bibliotecas mais antigas e conhecidas. Funciona sem dependências externas, adequada para PHP 5.6+. Sua principal vantagem é a sintaxe intuitiva, que lembra jQuery.



Instalação

// Baixe o arquivo simple_html_dom.php do GitHubrequire_once 'simple_html_dom.php';


Exemplo de uso

// Criando um objeto DOM a partir de uma URL$html = file_get_html('https://example.com');

// Encontrando todos os linksforeach($html->find('a') as $link) { echo $link->href . ' - ' . $link->plaintext . "";}

// Extraindo o título h1$h1 = $html->find('h1', 0);echo $h1 ? $h1->plaintext : 'Título não encontrado';

// Limpando a memória$html->clear();


Prós e contras

  • + Simplicidade e API intuitiva;
  • + Não requer Composer;
  • - Trabalho lento com documentos grandes;
  • - Projeto não é atualizado há muito tempo;
  • - Não suporta totalmente os padrões modernos do PHP 8.x.


2. DiDOM

Biblioteca moderna, ativamente mantida pela comunidade. Totalmente compatível com PHP 7.4–8.3. Usa seletores CSS e XPath, funciona muito mais rápido que o Simple HTML DOM.



Instalação via Composer

composer require imangazaliev/didom


Exemplo de uso

use DiDom\\Document;

$document = new Document('https://example.com', true);

// Buscando todos os links$links = $document->find('a');foreach ($links as $link) { echo $link->attr('href') . "";}

// Buscando por classe$items = $document->find('.product-title');foreach ($items as $item) { echo $item->text() . "";}

// Extraindo o primeiro elemento$firstTitle = $document->first('h2');echo $firstTitle ? $firstTitle->text() : 'Nenhum título encontrado';


Prós e contras

  • + Alta performance;
  • + Suporte a seletores CSS de qualquer complexidade;
  • + Trabalho com codificações;
  • - Requer Composer;
  • - Documentação em russo existe, mas é fragmentada.


3. Symfony DomCrawler

Parte do ecossistema Symfony, mas pode ser usada como biblioteca independente. Oferece uma API poderosa para navegação pelo DOM, extração de dados e trabalho com formulários.



Instalação

composer require symfony/dom-crawlercomposer require symfony/css-selector  // para seletores CSS


Exemplo de uso

use Symfony\\Component\\DomCrawler\\Crawler;

$html = file_get_contents('https://example.com');$crawler = new Crawler($

Recommendations