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

Sem retorno se tratando de outros sites

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?

4 respostas

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:

a

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

solução!

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. :-)