Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao executar Comando php buscar-cursos.php

Boa noite.

Adicionei o verify false ao criar a instancia Client do Guzzle, porém o erro persiste.

PHP Fatal error: Uncaught InvalidArgumentException: Expecting a DOMNodeList or DOMNode instance, an array, a string, or null, but got "GuzzleHttp\Psr7\Stream". in C:\xampp\htdocs\Buscador_Cursos\vendor\symfony\dom-crawler\Crawler.php:125

<?php 

require 'vendor/autoload.php';

use GuzzleHttp\Client;
use Symfony\Component\DomCrawler\Crawler;
use Symfony\Component\CssSelector\CssSelectorConverter;

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

$html = $response->getBody();
$crawler = new Crawler($html);

$cursos = $crawler->filter('span.card-curso__nome');

foreach ($cursos as $curso ) {
    echo $curso->textContent . PHP_EOL;
}
1 resposta
solução!

Olá Bruno,

O getBody() retorna um objeto GuzzleHttp\Psr7\Stream que é diferente do que o Crawler espera receber. Você pode corrigor isso ou convertendo o objeto para uma string ou utilizando um método addHtmlContent do crawler que já está preparado para receber esse tipo de objeto:

# Opção 1
# convertendo o conteúdo para string
$html = (string) $response->getBody();
$crawler = new Crawler($html);

# Opção 2
# modificando a passagem de informação para o crawler
$html = $response->getBody();
$crawler = new Crawler();
$crawler->addHtmlContent($html);

Espero ter ajudado, qualquer dúvida é só falar!