Goutte: Un Scraper Web PHP Simple et Efficace

Goutte

Découvrez Goutte, une bibliothèque PHP pour le scraping web, son utilisation et sa dépréciation vers Symfony.

Visiter le Site
Goutte: Un Scraper Web PHP Simple et Efficace

Goutte: Un Simple Scraper Web PHP

Goutte est une bibliothèque de scraping et de crawling web pour PHP. Elle offre une API conviviale pour explorer des sites web et extraire des données à partir des réponses HTML/XML. Cependant, il est important de noter que cette bibliothèque est désormais dépréciée.

Avertissement

À partir de la version 4, Goutte est devenu un simple proxy pour la classe HttpBrowser du composant Symfony BrowserKit. Pour migrer, remplacez Goutte\Client par Symfony\Component\BrowserKit\HttpBrowser dans votre code.

Exigences

Goutte nécessite PHP 7.1 ou supérieur.

Installation

Pour installer Goutte, ajoutez-le comme dépendance requise dans votre fichier composer.json :

composer require fabpot/goutte

Utilisation

Création d'une instance de client Goutte

Pour commencer, créez une instance de client Goutte qui étend Symfony\Component\BrowserKit\HttpBrowser :

use Goutte\Client;
$client = new Client();

Faire des requêtes

Vous pouvez faire des requêtes avec la méthode request() :

// Accéder au site symfony.com
$crawler = $client->request('GET', 'https://www.symfony.com/blog/');

Cette méthode retourne un objet Crawler (Symfony\Component\DomCrawler\Crawler). Pour utiliser vos propres paramètres HTTP, vous pouvez créer et passer une instance HttpClient à Goutte. Par exemple, pour ajouter un délai d'attente de 60 secondes :

use Goutte\Client;
use Symfony\Component\HttpClient\HttpClient;
$client = new Client(HttpClient::create(['timeout' => 60]));

Cliquer sur des liens

Pour cliquer sur un lien, utilisez le code suivant :

// Cliquer sur le lien "Security Advisories"
$link = $crawler->selectLink('Security Advisories')->link();
$crawler = $client->click($link);

Extraire des données

Pour extraire des données, vous pouvez utiliser le code suivant :

// Obtenir le dernier post dans cette catégorie et afficher les titres
$crawler->filter('h2 > a')->each(function ($node) {
    print $node->text()."\n";
});

Soumettre des formulaires

Pour soumettre un formulaire, utilisez le code suivant :

$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, ['login' => 'fabpot', 'password' => 'xxxxxx']);
$crawler->filter('.flash-error')->each(function ($node) {
    print $node->text()."\n";
});

Informations supplémentaires

Pour plus d'informations sur ce que vous pouvez faire avec Goutte, consultez la documentation des composants BrowserKit, DomCrawler et HttpClient de Symfony.

Prononciation

Goutte se prononce "goot", c'est-à-dire qu'il rime avec "boot" et non "out".

Informations techniques

Goutte est un mince wrapper autour des composants Symfony suivants : BrowserKit, CssSelector, DomCrawler et HttpClient.

Licence

Goutte est sous licence MIT.

Conclusion

Goutte est un outil puissant pour le scraping web en PHP, mais avec sa dépréciation, il est conseillé de migrer vers les composants Symfony appropriés. Pour en savoir plus, consultez la documentation officielle.

Essayez Goutte dès aujourd'hui !

Si vous êtes développeur PHP et que vous cherchez un moyen efficace de scraper des données, Goutte pourrait être un bon point de départ, même si vous devez garder à l'esprit sa dépréciation.

Meilleures Alternatives à Goutte