PHPackages                             cleitoncunha04/buscador-cursos-alura - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. cleitoncunha04/buscador-cursos-alura

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

cleitoncunha04/buscador-cursos-alura
====================================

Projeto com o intuito de buscar os cursos disponíveis no site da Alura

v1.1.0(1y ago)07MITPHP

Since Aug 15Pushed 1y ago1 watchersCompare

[ Source](https://github.com/cleitoncunha04/composer-buscador-cursos-alura)[ Packagist](https://packagist.org/packages/cleitoncunha04/buscador-cursos-alura)[ RSS](/packages/cleitoncunha04-buscador-cursos-alura/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (6)Versions (3)Used By (0)

Classe **`Buscador`**
=====================

[](#classebuscador)

A classe **`Buscador`** é responsável por realizar buscas de conteúdo em uma página web, utilizando um cliente HTTP e um parser HTML. O foco principal é extrair uma lista de cursos a partir de uma URL fornecida.

Propriedades
------------

[](#propriedades)

- **`ClientInterface $httpClient`**: Cliente HTTP utilizado para realizar a requisição à URL fornecida.
- **`Crawler $crawler`**: Objeto responsável por manipular e filtrar o conteúdo HTML retornado pela requisição.

Construtor
----------

[](#construtor)

**PHP**

```
public function __construct(
    public readonly ClientInterface $httpClient,
    public readonly Crawler $crawler
)
```

O construtor da classe **`Buscador`** utiliza a técnica de *constructor property promotion*, que simplifica a declaração de propriedades diretamente no construtor. Ele recebe as instâncias de **`ClientInterface`** e **`Crawler`**, que são armazenadas como propriedades somente leitura (*readonly*).

Métodos
-------

[](#métodos)

### **`buscarConteudo(string $url): array`**

[](#buscarconteudostring-url-array)

```
public function buscarConteudo(string $url): array
{
    $cursos = [];

    try {
        $resposta = $this->httpClient->request('GET', $url);

        $html = $resposta->getBody();

        $this->crawler->addHtmlContent($html, 'UTF-8');

        //gerei uma lista de cursos pesquisando pelo seletor CSS
        $elementosCursos = $this->crawler->filter('span.card-curso__nome');

        //a lista retornou um "DOM", então fiz um foreach para pegar os textContent's (títulos dos cursos)
        foreach ($elementosCursos as $elemento) {
            $cursos[] = $elemento->textContent;
        }
    } catch (GuzzleException $e) {
        $cursos[] = "Ocorreu um erro ao buscar o curso: " . $e->getMessage();
    }

    if (count($cursos) == 0) {
        $cursos[] = "Nenhum curso encontrado";
    }

    return $cursos;
}
```

Este método realiza a busca de conteúdo na URL fornecida e retorna uma lista de títulos de cursos encontrados.

**Parâmetros:**

- **`string $url`**: A URL da página onde os cursos serão buscados.

**Retorno:**

- **`array`**: Retorna um array contendo os títulos dos cursos encontrados ou mensagens de erro.

**Funcionamento:**

1. **Requisição HTTP**: O método faz uma requisição GET à URL fornecida usando o cliente HTTP (**`$httpClient`**).
2. **Processamento do HTML**: O conteúdo HTML da página é extraído da resposta e adicionado ao **`Crawler`** para ser processado.
3. **Filtragem dos Cursos**: Utiliza um seletor CSS (**`span.card-curso__nome`**) para filtrar os elementos que contêm os títulos dos cursos.
4. **Extração dos Títulos**: Os títulos dos cursos são extraídos através de um loop que percorre os elementos filtrados e adiciona o texto de cada um ao array **`$cursos`**.
5. **Tratamento de Erros**: Em caso de erro na requisição HTTP, uma mensagem de erro é adicionada ao array **`$cursos`**.
6. **Verificação de Resultados**: Se nenhum curso for encontrado, uma mensagem indicando “Nenhum curso encontrado” é adicionada ao array **`$cursos`**.

### Exemplo de Uso:

[](#exemplo-de-uso)

**PHP**

```
$buscador = new Buscador($httpClient, $crawler);
$resultados = $buscador->buscarConteudo('https://www.alura.com.br/cursos-online-programacao/php');
foreach ($resultados as $curso) {
    echo $curso . PHP_EOL;
}
```

AI-generated code. Review and use carefully. [More info on FAQ](https://www.bing.com/new#faq).

Dependências
------------

[](#dependências)

- **`ClientInterface`**: Interface de um cliente HTTP, normalmente provida por bibliotecas como o Guzzle.
- **`Crawler`**: Classe utilizada para manipulação de documentos HTML, parte da biblioteca Symfony DomCrawler.

by **`GPT`**

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance34

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

636d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/89f3637eeeb1424c1baf497b04ef2b398e1643ce662ac570a6dbc3e6f802bf90?d=identicon)[cleitoncunha04](/maintainers/cleitoncunha04)

---

Top Contributors

[![cleitoncunha04](https://avatars.githubusercontent.com/u/102325156?v=4)](https://github.com/cleitoncunha04 "cleitoncunha04 (4 commits)")

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/cleitoncunha04-buscador-cursos-alura/health.svg)

```
[![Health](https://phpackages.com/badges/cleitoncunha04-buscador-cursos-alura/health.svg)](https://phpackages.com/packages/cleitoncunha04-buscador-cursos-alura)
```

###  Alternatives

[spatie/laravel-pjax

A pjax middleware for Laravel 5

513371.8k11](/packages/spatie-laravel-pjax)[ashallendesign/favicon-fetcher

A Laravel package for fetching website's favicons.

190272.4k3](/packages/ashallendesign-favicon-fetcher)[visuellverstehen/statamic-classify

A useful helper to add CSS classes to all HTML tags generated by the bard editor.

20116.8k](/packages/visuellverstehen-statamic-classify)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

255.2k](/packages/aedart-athenaeum)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
