Oi!
Sim pelo print dá para ver que a estrutura da página da Alura mudou, então o seletor usado na aula (span.card-curso__nome) não funciona mais.
Na versão atual da página, o nome do curso está dentro de um h3, e não naquele span. A própria página atual da Alura ainda lista os cursos normalmente, inclusive os cursos de PHP.
No seu print, por exemplo, aparece algo semelhante a:
<h3 class="line-clamp-2 font-family-1 text-heading-01 ...">
PHP: conceitos, lidando com dados, loops e mais
</h3>
O que mudar no seu código
Se você está usando o DomCrawler, experimente trocar:
$cursos = $crawler->filter('span.card-curso__nome');
por:
$cursos = $crawler->filter('h3');
E mantenha o foreach:
foreach ($cursos as $curso) {
echo $curso->textContent . PHP_EOL;
}
Porém, eu não recomendaria simplesmente usar h3, porque isso pode capturar outros títulos da página além dos cursos.
Uma alternativa melhor é usar uma classe mais específica do elemento que contém o título. Pelo HTML mostrado no seu DevTools, o h3 possui a classe line-clamp-2. Então você poderia testar:
$cursos = $crawler->filter('h3.line-clamp-2');
foreach ($cursos as $curso) {
echo trim($curso->textContent) . PHP_EOL;
}
Mas há um detalhe importante:
Se mesmo com h3 não aparecer nada, o problema provavelmente não é mais o seletor.
Isso acontece porque você está fazendo uma requisição HTTP com o Guzzle e tentando analisar o HTML retornado pelo servidor. O que aparece no DevTools do Chrome pode não ser exatamente o mesmo HTML que o Guzzle recebe.
Eu faria este teste antes de qualquer coisa:
$html = $resposta->getBody();
file_put_contents('pagina.html', $html);
echo strlen($html);
Execute:
php buscar-cursos.php
Se aparecer um número grande, abra o arquivo pagina.html no navegador e procure por:
PHP: conceitos
Se não encontrar, significa que o conteúdo dos cards está sendo montado/alterado posteriormente pelo JavaScript, e aí o DomCrawler não vai enxergar esses elementos simplesmente trocando o seletor.
Isso é especialmente importante porque o site atual da Alura passou por mudanças recentes, a página de cursos que consultei atualmente apresenta uma estrutura diferente da utilizada nos exemplos antigos do curso.