Crawler e gerador de sitemapPHP Crawler

Rastreie. Analise. Gere.

Crawler em PHP que percorre um site em paralelo e gera sitemaps XML prontos para produção, respeitando canonical, noindex e nofollow.

PHP Crawler: Crawler e gerador de sitemap
PHP Crawler — No celular
Ano
2026
Papel
Desenho da API, implementação, benchmark e página de demonstração.
Stack
  • PHP 8.4
  • cURL multi
  • DOM
  • XMLWriter

O problema

Muitos sites não geram o próprio sitemap, e as ferramentas online limitam o número de páginas ou não se encaixam em um processo automatizado de deploy.

Em números

  • 50 milURLs por arquivo antes da rotação
  • 6eventos ao longo do rastreamento
  • 4peças substituíveis: HTTP, logger, analisador e escritor
  • 3regras de indexação respeitadas: canonical, noindex e nofollow

O que foi construído

  1. Pool de workers com curl_multi para buscar várias páginas ao mesmo tempo, com fallback sequencial.

  2. Normalização de URLs: resolve caminhos relativos, remove fragmentos e processa apenas respostas text/html.

  3. Respeita meta robots (noindex, nofollow) e URLs canônicas, e pode ficar restrito ao mesmo host e protocolo.

  4. Escritor rotativo que abre um novo arquivo a cada 50 mil URLs e gera o sitemap-index.xml.

  5. Eventos em cada etapa do rastreamento e cliente HTTP, logger e analisador de página substituíveis.

Na prática

<?php

use Tonsoo\PhpCrawler\Extensions\SitemapExtension;
use Tonsoo\PhpCrawler\Sitemap\SitemapGenerator;
use Tonsoo\PhpCrawler\Sitemap\Writers\RotatingSitemapWriter;

crawler()
    ->multithreaded(workers: 8)
    ->preserveHost()
    ->maxPages(1000)
    ->extension(new SitemapExtension(
        generator: new SitemapGenerator(
            writer: new RotatingSitemapWriter(directory: __DIR__ . '/sitemap'),
        ),
    ))
    ->start('https://example.com');
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap><loc>https://example.com/sitemap-1.xml</loc></sitemap>
  <sitemap><loc>https://example.com/sitemap-2.xml</loc></sitemap>
</sitemapindex>

Telas

Resultado

Começou em 2024 como um script e foi reescrito em 2026 como biblioteca extensível, pronta para rodar em CI ou em uma tarefa agendada.

Contato

Tem um projeto em mente?

Conte o que você precisa. Respondo em até dois dias úteis.

contato@alysson-thoaldo.com.brAbrir formulário