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 🤘