PHPackages                             awam/se - 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. awam/se

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

awam/se
=======

Getting metadata of some pages based on keywords

v0.4(4y ago)06MITPHPPHP &gt;=7.2

Since Jul 1Pushed 4y ago1 watchersCompare

[ Source](https://github.com/feras1984/search-engine-1)[ Packagist](https://packagist.org/packages/awam/se)[ RSS](/packages/awam-se/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (4)Dependencies (2)Versions (4)Used By (0)

Crawling Search Engine
======================

[](#crawling-search-engine)

In this project, we will mimic the searching operation done by normal user to get a bundle of websites. Then we will enter the available pages and extract some metadata. In order to apply the simulation process we will:

1. Search the required keywords and extract the useful links.
2. For each link, get the metadata associated with it.

There are many libraries to make crawling using PHP, such as Guzzle, Guette, SimpleHtmlDom, or Panther. In this application, we used Symphony Panther client as it is suitable for dynamic pages that uses ajax, axios libraries to get their data. But Symphony panther needs chrome/firefox driver to act as a browser. We need to install the driver before beginning the panther application.

To configure Symphony Panther, We do the following:

1. Install chrome driver

`composer require --dev dbrekelmans/bdi && vendor/bin/bdi detect drivers`2. Install the package that is designed to do the job. `composer require awam/se`

The package awam/se is hosted in [`https://packagist.org/`](https://packagist.org/).

After installing the packages, we can create `index.php` file. If we want to find a keywork like `red`. we can perform this snippet:

```

use HttpClient\PantherClient;

require "vendor/autoload.php";

/**
 * In order to try many HttpClients, such as (Guzzle, Goutte, SimpleHtmlDom, or Panther), we need loose coupling
 * between Search Engine and Http Clients, so we have used service container (Dependency Injection) in this case.
 * In this application, we used Symphony Panther client as it is suitable for dynamic pages that uses ajax, axios libraries to get their data.
 */

$httpClient = new HttpClient\PantherClient();

$client = new SearchEngine\SearchEngine($httpClient);
$client->setEngine('google.ae');
$results = $client->search(['red']);

while ($results->valid()) {
    var_dump("\n==================\n");
    var_dump($results->current());
    $results->next();
}

```

After that we can run the command in cmd:

`php index.php`

Note that $results is ArrayIterator that we can roam between the links. The project can be easily expanded to accommodate other Http Clients thanks to dependency injection made between SearchEngine and PantherClient.

###  Health Score

18

—

LowBetter than 8% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity35

Early-stage or recently created project

 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

3

Last Release

1463d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/37912eb9f367aff0f2c103ed43d307cd86170396ba74680292e73bfa0606878b?d=identicon)[feras1984](/maintainers/feras1984)

---

Top Contributors

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

### Embed Badge

![Health badge](/badges/awam-se/health.svg)

```
[![Health](https://phpackages.com/badges/awam-se/health.svg)](https://phpackages.com/packages/awam-se)
```

PHPackages © 2026

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