Não obtive nenhum retorno no prompt de comando quando tento filtrar conteúdos de outros sites, nem erro, nem warnings, nada me é retornado, estaria faltando alguma coisa?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Não obtive nenhum retorno no prompt de comando quando tento filtrar conteúdos de outros sites, nem erro, nem warnings, nada me é retornado, estaria faltando alguma coisa?
Não entendi, Gabriel. Pode explicar um pouco melhor o que você tentou fazer, mostrando o código, inclusive?
Na aula retornamos no terminal os cursos php da Alura, mas eu quis experimentar algo diferente, por exemplo, os Trending Topics do twitter, no entanto, no terminal o que me é apresentado é nada:
busca-trends.php
<?php
require 'vendor/autoload.php';
use Alura\BuscadorDeTrend\Buscador;
use GuzzleHttp\Client;
use Symfony\Component\DomCrawler\Crawler;
$client = new Client(['base_uri' => 'https://www.twitter.com/']);
$crawler = new Crawler();
$buscador = new Buscador($client, $crawler);
$cursos = $buscador->buscar('/explore/tabs/trending');
foreach ($cursos as $curso) {
echo $curso . PHP_EOL;
}Buscador.php
<?php
namespace Alura\BuscadorDeTrend;
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);
$elementosCursos = $this->crawler->filter('span.css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0');
$cursos = [];
foreach ($elementosCursos as $elemento) {
$cursos[] = $elemento->textContent;
}
return $cursos;
}
}Tentei também filtrando cada uma das classes
Esse seletor CSS está errado, Gabriel. Provavelmente é esse o erro. Se o que você quer é pegar um elemento que contenha todas essas classes, o seletor correto seria span.css-901oao.css-16my406.r-poiln3.r-bcqeeo.r-qvutc0.
Se o assunto de web scrapping te interessa, recomendo dar uma olhada no curso de web scrapping. Lá tem um pouco mais de detalhes sobre seletores, XPath, etc. O foco desse treinamento é composer e só usei web scrapping como exemplo pra ter um projeto interessante. :-)
Entendi. Obrigado pelo retorno e pela indicação, eu irei iniciar o curso de web scrapping sim. :-)