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

Meu código não apresenta erro algum, porém não retorna nada

Meu código funciona sem erros, porém não retorna nada na execução.

<?php

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

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

$client = new \GuzzleHttp\Client(['base_uri' => 'https://www.alura.com.br/', 'verify'=> false]);
$crawler = new Crawler();


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

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

echo "Código funciona?";

no caso acima, ele apenas retorna o echo de teste - 'código funciona?'

codigo da classe:

<?php

namespace Alura\BuscadordeCursos;

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

class Buscador {

    private $httpClient;
    private $crawler;

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

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

        $html = $resposta->getBody();

        $this->crawler->addHtmlContent($html);

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

        foreach($elementos as $elemento) {
           $cursos[] = $elemento->textContent;
        }

        return $cursos;


    }
}
4 respostas

Oi Bianca, beleza?

Então... Não aparece nada por que sua busca não está retornando nada.

Pelo que notei, o nome da classe que contém os cursos foi modificada, na sua função filter deixe da seguinte maneira:

$elementos = $this->crawler->filter('span.card-curso_nome');

Caso isso resolva marque a reposta como solução, se não resolver é só avisar =D

Bons estudos.

Olá Diego, obrigada pelo retorno!

A sua alteração não funcionou =| e na verdade a linha do filter que você me mandou parece a mesma que já estava no meu código, não vi diferença kkkk

solução!

Oi Bianca, erro meu na hora de copiar, tente assim : $elementos = $this->crawler->filter('.card-curso__nome');

Agora funcionou =DD Muito obrigada Diego!