Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Não retorna o conteúdo da lista de cursos

Olá!

Estou testando agora com a classe Buscador r não tenho resultado, verifiquei com var_dump() e o resultado foi array(0) {}.

buscar-cursos.php

<?php

require 'vendor/autoload.php';
require 'src/Buscador.php';

use Alura\BuscardorDeCursos\Buscador;
use GuzzleHttp\Client;
use Symfony\Component\DomCrawler\Crawler;

$client = new Client([
    'base_uri' => 'https://cursos.alura.com.br/',
    'verify' => false
]);

$crawler = new Crawler();

$buscador = new Buscador($client, $crawler);
$cursos = $buscador->buscar('/category/programacao/php');

var_dump($cursos);

foreach($cursos as $curso) {
    echo $curso . PHP_EOL;
}

buscador.php

<?php

namespace Alura\BuscardorDeCursos;

use GuzzleHttp\ClientInterface;
use Symfony\Component\DomCrawler\Crawler;


class Buscador
{
    private ClientInterface $httpClient;
    private Crawler $crawler;

    public function __construct($httpClient, $crawler)
    {
        $this->httpClient = $httpClient;
        $this->crawler = $crawler;
    }

    public function buscar(string $url) : array
    {
        $resposta = $this->httpClient->request('GET', $url);

        $html = $resposta->getBody()->getContents();
        $this->crawler->addHtmlContent($html);

        $elementosCursos = $this->crawler->filter('span.card-curso__nome');
        $cursos = [];

        foreach($elementosCursos as $elemento) {
            $cursos[] = $elemento->textContent;
        }
        return $cursos;
    }
}
3 respostas

Olá, Julio. Tudo bem?

A url que você está buscando os cursos é essa:

https://cursos.alura.com.br/category/programacao/php

Entretanto, essa url só pode ser acessada se você estiver logado na sua conta da Alura, ou seja, o Guzzle está tentando acessar esta página, e está sendo redirecionado para essa outra página:

https://cursos.alura.com.br/loginForm?urlAfterLogin=https://cursos.alura.com.br/category/programacao/php

Por isso não está retornando nada.

Para resolver isso e continuar o curso, sugiro que você altere o link de onde você está buscando os cursos:

buscar-cursos.php

$client = new Client([
    'base_uri' => 'https://www.alura.com.br/',
    'verify' => false
]);
$cursos = $buscador->buscar('/cursos-online-programacao/php');

Espero ter ajudado =)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓

Boa noite Vinicius!

Perfeito!

Muito grato.

solução!

Não se esquece de marcar o tópico como solucionado =)