Laravel-Goutte is a laravel service container wrapper for FriendsOfPHP Goutte Package which is a screen scraping and web crawling library for PHP.
mrkatz/laravel-goutte is a Laravel package for laravel-goutte is a laravel service container wrapper for friendsofphp goutte package which is a screen scraping and web crawling library for php..
It currently has 0 GitHub stars and 82 downloads on Packagist.
Install it with composer require mrkatz/laravel-goutte.
Discover more Laravel packages by mrkatz
or browse all Laravel packages to compare alternatives.
Last updated
Laravel-Goutte is a laravel service container wrapper for FriendsOfPHP Goutte Package which is a screen scraping and web crawling library for PHP.
Goutte provides a nice API to crawl websites and extract data from the HTML/XML responses.
Goutte depends on PHP 7.1+ and Guzzle 6+.
Add mrkatz/laravel-goutte as a require dependency in your composer.json file:
.. code-block:: bash
composer require mrkatz/laravel-goutte
Create a Goutte Client instance (which extends
Symfony\Component\BrowserKit\Client):
.. code-block:: php
use Goutte\Client;
$client = new Client();
Make requests with the request() method:
.. code-block:: php
// Go to the symfony.com website
$crawler = Goutte::request('GET', 'https://www.symfony.com/blog/');
The method returns a Crawler object
(Symfony\Component\DomCrawler\Crawler).
To use your own Guzzle settings, you may create and pass a new Guzzle 6 instance to Goutte. For example, to add a 60 second request timeout:
.. code-block:: php
use Goutte\Client;
use GuzzleHttp\Client as GuzzleClient;
$goutteClient = new Client();
$guzzleClient = new GuzzleClient(array(
'timeout' => 60,
));
$goutteClient->setClient($guzzleClient);
Click on links:
.. code-block:: php
// Click on the "Security Advisories" link
$link = $crawler->selectLink('Security Advisories')->link();
$crawler = $client->click($link);
Extract data:
.. code-block:: php
// Get the latest post in this category and display the titles
$crawler->filter('h2 > a')->each(function ($node) {
print $node->text()."\n";
});
Submit forms:
.. code-block:: php
$crawler = $client->request('GET', 'https://github.com/');
$crawler = $client->click($crawler->selectLink('Sign in')->link());
$form = $crawler->selectButton('Sign in')->form();
$crawler = $client->submit($form, array('login' => 'fabpot', 'password' => 'xxxxxx'));
$crawler->filter('.flash-error')->each(function ($node) {
print $node->text()."\n";
});
Read the documentation of the BrowserKit_ and DomCrawler_ Symfony
Components for more information about what you can do with Goutte.
Goutte is pronounced goot i.e. it rhymes with boot and not out.
Laravel-Goutte is a thin wrapper around the following fine PHP libraries:
FriendsOfPHP/Goutte
Symfony Components: BrowserKit, CssSelector and DomCrawler_;
Guzzle_ HTTP Component.
Goutte is licensed under the MIT license.
.. _Composer: https://getcomposer.org
.. _Guzzle: http://docs.guzzlephp.org
.. _BrowserKit: https://symfony.com/components/BrowserKit
.. _DomCrawler: https://symfony.com/doc/current/components/dom_crawler.html
.. _CssSelector: https://symfony.com/doc/current/components/css_selector.html