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

PHP Fatal error: Uncaught GuzzleHttp\Exception\RequestException

Não sei o porque do erro

nome do arquivo: composer.json

{
    "name": "refri/buscar-cursos",
    "description": "BuscarCursosAlura",
    "type": "library",
    "authors": [
        {
            "name": "Phelipe",
            "email": "phelipeoliveira209@gmail.com"
        }
    ],
    "require": {
        "guzzlehttp/guzzle": "^7.2",
        "symfony/dom-crawler": "^4.2"
    }
}

nome do arquivo BuscarCursos.php

<?php
    require 'vendor/autoload.php';

    $client = new \GuzzleHttp\Client();

    $resposta = $client->request('GET','https://cursos.alura.com.br/formacao-desenvolvedor-php');

    $html = $resposta->getBody();

    $crawler = new \Symfony\Component\DomCrawler\Crawler();
    $crawler->addHtmlContent($html);
    $cursos = $crawler->filter('span.learning-content__name');

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

?>
3 respostas
solução!

Olá Phelipe,

Isso é provavelmente uma falha na verificação do certificado do site acessado, desativa essa verificação na criação do client que deve funcionar:

$client = new \GuzzleHttp\Client(['verify' => false]);

Outro detalhe é que a página que você está acessando não é "aberta", é preciso fazer login antes (faça o teste abrindo a url em uma guia anônima: https://cursos.alura.com.br/formacao-desenvolvedor-php). Mas você pode utilizar essa outra página aberta para acessar a lista de cursos: https://alura.com.br/formacao-desenvolvedor-php, mas você ainda vai ter que ajustar o seletor utilizado pois o nome do curso não fica em um span com a classe .learning-content__name

Obs.: Talvez ainda seja necessário a instalação de mais uma biblioteca para o filtro do crawler funcionar, segue o comando de instalação caso seja necessário: composer require symfony/css-selector

Espero ter ajudado, qualquer coisa é só falar!

Funcionou, muito obrigado. aliais você tem um ótimo gosto para animes

hahaha obrigado