PHPackages                             rebelinblue/fluent-web-crawler - 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. [HTTP &amp; Networking](/categories/http)
4. /
5. rebelinblue/fluent-web-crawler

ActiveLibrary[HTTP &amp; Networking](/categories/http)

rebelinblue/fluent-web-crawler
==============================

A web crawler with a fluent interface

1.0.5(6y ago)83.6kMITPHPPHP &gt;=7.1.0

Since Mar 25Pushed 3y ago1 watchersCompare

[ Source](https://github.com/REBELinBLUE/fluent-crawler)[ Packagist](https://packagist.org/packages/rebelinblue/fluent-web-crawler)[ RSS](/packages/rebelinblue-fluent-web-crawler/feed)WikiDiscussions master Synced yesterday

READMEChangelog (6)Dependencies (10)Versions (7)Used By (0)

[![logo](https://camo.githubusercontent.com/158ab35979c17533729e4b6d0d61e15de5a88e51a0a10457713811f3c9b8b8b7/68747470733a2f2f7777772e7361696e7362757279732e636f2e756b2f6173736574732f696d616765732f6c6f676f735f6c6f676f496d6167655f35547268657951746a6b364f58595a563647764331525f7361696e7362757279732d6c6f676f2e737667)](https://camo.githubusercontent.com/158ab35979c17533729e4b6d0d61e15de5a88e51a0a10457713811f3c9b8b8b7/68747470733a2f2f7777772e7361696e7362757279732e636f2e756b2f6173736574732f696d616765732f6c6f676f735f6c6f676f496d6167655f35547268657951746a6b364f58595a563647764331525f7361696e7362757279732d6c6f676f2e737667)

Fluent Web Crawler
==================

[](#fluent-web-crawler)

[![StyleCI](https://camo.githubusercontent.com/7ac51621b4e428381b45178a84269bd6185ca41d6333c0cb1c76267490c8c7c9/68747470733a2f2f7374796c6563692e696f2f7265706f732f38353731333637312f736869656c643f7374796c653d666c61742d737175617265266272616e63683d6d6173746572)](https://styleci.io/repos/85713671)[![Build Status](https://camo.githubusercontent.com/1d5651adeee796d8eadcdd5b14fc65b3567d030438ba1d113a7a45f96fae980d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f776f726b666c6f772f7374617475732f524542454c696e424c55452f666c75656e742d637261776c65722f54657374733f6c6162656c3d4275696c64267374796c653d666c61742d737175617265)](https://github.com/REBELinBLUE/fluent-crawler/actions?query=workflow%3ATests)[![Code Climate](https://camo.githubusercontent.com/b82af9b2d6d64d34096e15fa300de1db502a04aecb0f6915322b1bee3e0a29ba/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636c696d6174652f636f7665726167652d6c65747465722f524542454c696e424c55452f666c75656e742d637261776c65723f7374796c653d666c61742d737175617265)](https://codeclimate.com/github/REBELinBLUE/fluent-crawler)[![Code Coverage](https://camo.githubusercontent.com/bffbc48fea7be0c75cb9f4d1168e852a2970c7abb3100d83fe374ee55e24cb28/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f6769746875622f524542454c696e424c55452f666c75656e742d637261776c65722f6d61737465722e7376673f7374796c653d666c61742d737175617265)](https://codecov.io/gh/REBELinBLUE/fluent-crawler)

A web scraping library for PHP with a nice fluent interface.

A fork of [laravel/browser-kit-testing](https://github.com/laravel/browser-kit-testing), repurposed to use with real HTTP requests.

Developed for a project I worked on at Sainsbury's.

Requirements
------------

[](#requirements)

PHP 7.1+ and Goutte 3.1+

Installation
------------

[](#installation)

The recommended way to install the library is through [Composer](http://getcomposer.org).

Add `rebelinblue/fluent-web-crawler` as a require dependency in your `composer.json` file:

```
composer require rebelinblue/fluent-web-crawler
```

Usage
-----

[](#usage)

**Create an instance of the Crawler**

```
use REBELinBLUE\Crawler;

$crawler = new Crawler();
```

**Visit a URL**

```
$crawler->visit('http://www.example.com');
```

**Interact with the page**

```
$crawler->type('username', 'admin')
        ->type('password', 'password')
        ->press('Login');

// This can also be written as the following

$crawler->submitForm('Login', [
    'username' => 'admin',
    'password' => 'password',
]);
```

**Check the response is as expected**

```
if ($crawler->dontSeeText('Hello World')) {
    throw new \Exception('The page does not contain the expected text');
}
```

For a full list of the available actions see [api.md](api.md).

### Customising the HTTP client settings

[](#customising-the-http-client-settings)

If you wish to customize the instance of Goutte which is used (or more likely, the instance of Guzzle), you can inject your own instance when constructing the class. For example, you may want to increase Guzzle's timeout

```
use Goutte\Client as GoutteClient;
use GuzzleHttp\Client as GuzzleClient;

$goutteClient = new GoutteClient();
$guzzleClient = new GuzzleClient([
    'timeout' => 60,
]);
$goutteClient->setClient($guzzleClient);

$crawler = new Crawler($goutteClient);
```

Further Reading
---------------

[](#further-reading)

Fluent Crawler is a wrapper around the following PHP libraries.

- [Goutte](https://github.com/FriendsOfPHP/Goutte) web scraper.
- Symfony [BrowserKit](https://symfony.com/components/BrowserKit), [CssSelector](https://symfony.com/doc/current/components/css_selector.html) and [DomCrawler](https://symfony.com/doc/current/components/dom_crawler.html).
- [Guzzle](http://docs.guzzlephp.org) HTTP client.

###  Health Score

31

—

LowBetter than 66% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity22

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity62

Established project with proven stability

 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 ~227 days

Recently: every ~284 days

Total

6

Last Release

2245d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/a798bd72a19c4065ebbb1425c51bd01b264b1e6f5525be16c7e063dee8ff8017?d=identicon)[REBELinBLUE](/maintainers/REBELinBLUE)

---

Top Contributors

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

---

Tags

crawlergoutteguzzlephp

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/rebelinblue-fluent-web-crawler/health.svg)

```
[![Health](https://phpackages.com/badges/rebelinblue-fluent-web-crawler/health.svg)](https://phpackages.com/packages/rebelinblue-fluent-web-crawler)
```

###  Alternatives

[php-http/cache-plugin

PSR-6 Cache plugin for HTTPlug

25025.5M80](/packages/php-http-cache-plugin)[illuminate/http

The Illuminate Http package.

11937.2M6.6k](/packages/illuminate-http)[rdkafka/rdkafka

A PHP extension for Kafka

2.2k20.0k1](/packages/rdkafka-rdkafka)[httpsoft/http-message

Strict and fast implementation of PSR-7 and PSR-17

87930.4k113](/packages/httpsoft-http-message)[mezzio/mezzio-router

Router subcomponent for Mezzio

265.3M84](/packages/mezzio-mezzio-router)[serpapi/google-search-results-php

Get Google, Bing, Baidu, Ebay, Yahoo, Yandex, Home depot, Naver, Apple, Duckduckgo, Youtube search results via SerpApi.com

69122.6k](/packages/serpapi-google-search-results-php)

PHPackages © 2026

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