Goutte es mi libreria php preferida para scrapeo web. A continuación un par de códigos básicos a modo de chuleta que más suelo usar a la hora de scrapear una página web.

Click sobre links

$link = $crawler->selectLink('Ver más')->link();
$crawler = $client->click($link);

Formularios

Login básico:

$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' => 'pepito', 'password' => 'tuclave'));

Formulario con button:

$button = $crawler->selectButton('Actualizar')->form();
$crawler = $client->submit($button);

Abrir otra url

$crawler = $client->request('GET', 'https://github.com/');

Extraer datos

Texto de un elemento

$crawler->filter('body p')->each(function ($node) {
    echo $node->text();
});

Atributos. Ejemplo para enlaces con atributos «href», «title», etc…

$links = $crawler->filter('a')->each(function($node) {
    echo $node->attr('href');
    echo $node->attr('title');

Selectores de índice

Ej. «Primer elemento»

$crawler->filter('body > p')->eq(0);

Ej. «Último elemento»

$crawler->filter('body > p')->first();

Ej. «Último elemento»

$crawler->filter('body > p')->last();

Selectores de clase. Ej. clase «container»

$crawler->filter('.container');

Selectores con estilos en línea. Ej

$crawler->filter('div[style*="width:200px; overflow: hidden;"]');

Puedes ver más selectores en https://symfony.com/doc/current/components/dom_crawler.html

La libreria ha sido desarrollada por Fabien Potencier y esta en github.

Agradezco tu comentario 🤘