la raspado web con Laravel combina la potencia del framework PHP y librerías especializadas para automatiser l’extraction de données.
C’est une solution robuste pour collecter, traiter et organiser des informations en ligne. Découvrons ensemble dans cet article comment faire du web scraping con Laravel.

Requisitos previos para el scraping con Laravel
Laravel es un Framework PHP ampliamente utilizado para desarrollar aplicaciones web modernas.
Gracias a su rico ecosistema, ofrece un entorno ideal para desarrollar web scraping con PHP de forma organizada y fácil de mantener. Para empezar, es importante :
- 🔥 Domina los fundamentos de PHP y Laravel.
- 🔥 Entender HTML y CSS para orientar los elementos.
- 🔥 Saber manipular Composer para instalar paquetes.
👉 Las herramientas esenciales son:
- Drop : la bibliothèque PHP de référence. Elle simplifie les requêtes et l’extraction de données.
- Titiritero/Cromo sin cabeza Un navegador sin cabeza. Esencial para el scraping de páginas que utilizan mucho JavaScript.
- Cliente HTTP Laravel : permite realizar consultas con
Http::get()para recuperar contenidos sencillos.
Tutorial para crear tu primer scraper con Laravel
Siga este tutorial paso a paso para crear un scraper funcional con Laravel.
⚠ Cumpla siempre las condiciones de uso de los sitios web, los robots.txt y la legislación local. Limite la carga (rate-limit), identifique un User-Agent y no recoja datos sensibles.
Paso 1: Instalación y configuración
Crea un nuevo proyecto Laravel y añade Goutte (integración Laravel).
# 1) Crea un nuevo proyecto Laravel
compose create-project laravel/laravel scraper-demo
cd scraper-demo
# 2) Añade Goutte (integración con Laravel)
composer require weidner/goutte
Paso 2: Crear un pedido de artesanía
Genere un comando que contenga su lógica de raspado:
php artisan make:command ScrapeData
El archivo se crea aquí : app/Consola/Comandos/ScrapeData.php.
Paso 3: Escribir el código del scraper
En el comando generado, añada :
- ✅ Uno Solicitud HTTP para recuperar el contenido HTML.
- ✅ Des Selectores CSS para orientar los datos.
- ✅ Uno bucle para examinar los elementos y mostrar los resultados.
He aquí un ejemplo código completo pour scraper les titres d’articles d’un blog :
info("Raspado: {$url}");
// 1) Petición HTTP para recuperar el HTML
$crawler = Goutte::request('GET', $url);
// 2) Uso de selectores CSS
$nodes = $crawler->filter('h2 a');
// 3) Recorrer los elementos y mostrarlos
$nodes->each(function (Crawler $node, $i) {
$title = $node->text();
$link = $node->attr('href');
$this->line(($i+1) . ". " . $ítulo . " - " . $link);
});
return self::SUCCESS;
}
}
Mejores prácticas para el web scraping con Laravel
Para hacer web scraping eficazmente con Laravel, he aquí algunos consejos a tener en cuenta:
1. Gestion des tâches et de la mise en file d’attente
El scraping puede tardar varios segundos por página. Imagina que tuvieras que scrapear 1000 páginas, tu aplicación Laravel estaría bloqueada e inutilizable durante mucho tiempo. La solución puestos de trabajo y los Colas Laravel.
- UN trabajo, c’est une tâche que vous voulez exécuter en arrière-plan.
- A cola (file d’attente), c’est l’endroit où on range ces jobs pour qu’ils soient exécutés petit à petit, sans bloquer le reste.
👉 He aquí un ejemplo para encapsular la lógica del scraping en un Job :
// app/Jobs/ScrapePageJob.php
<?php
namespace App\Jobs;
use Goutte\Client; // Ou Guzzle/Http, selon ta stack
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
class ScrapePageJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected string $url;
public function __construct(string $url)
{
$this->url = $url;
}
public function handle(): void
{
$client = nuevo Cliente();
$crawler = $client->request('GET', $this->url);
// Ejemplo sencillo: extraer todo <h1>
$ítulos = $crawler->filter('h1')->each(function ($node) {
return $node->text();
});
// Persistencia / logs / eventos...
foreach ($ítulos as $ítulo) {
\Log::info("[Scraping] {$this->url} - H1: {$title}");
}
}
}
// app/Http/Controllers/ScraperController.php
onQueue('scraping'); // si quieres una cola dedicada
}
return response()->json(['status' => 'Scraping running in background 🚀']);
}
}
👉 Comme vous avez vu, les jobs vont dans une queue (file d’attente). Laravel propose plusieurs systèmes pour gérer cette file. Les plus utilisées sont :
- La file d’attente avec la base de données Los trabajos se almacenan como filas en una tabla SQL y luego se ejecutan uno a uno por un worker.
- La file d’attente avec Redis Los trabajos se colocan en memoria en una cola ultrarrápida, ideal para procesar un gran volumen de tareas.
2. Automatización con el programador de tareas de Laravel
Laravel integra un programador de tareas (scheduler) qui permet d’automatizar el raspado.
Así que puedes planifier l’exécution d’une commande de scraping a intervalos regulares, por ejemplo cada hora.
👉 Voici comment l’exécuter dans app/Consola/Kernel.php :
command('scraper:run')->cada hora();
// Ejemplos útiles :
// $schedule->command('scraper:run')->everyFifteenMinutes();
// $schedule->command('scraper:run')->dailyAt('02:30')->timezone('Indian/Antananarivo');
}
/**
* Registro de pedidos.
*/
protected function órdenes(): void
{
$this->load(__DIR__ . '/Comandos');
}
}
3. Eludir la protección anti-scraping
Beaucoup de sites mettent en place des protections contre les scrapers. Pour éviter d’être bloqué, il est mieux de :
- ✅ Changer l’User-Agent simular un navegador real.
- ✅ Gestión de los plazos insertar pausas (sleep, throttle) entre peticiones para no sobrecargar el servidor de destino.
- ✅ Utilizar proxies Distribuir las solicitudes entre varias direcciones IP.
¿Cuáles son las alternativas al web scraping con Laravel?
Même si Laravel est pratique pour intégrer le scraping dans une application PHP, il existe d’autres solutions souvent plus spécialisées.
Python es el lenguaje más utilizado para el scraping. Cuenta con potentes bibliotecas como Scrapy y BeautifulSoup.
- Herramientas sin código
De plus en plus d’outils permettent de faire du scraping sin codificación Donde avec l’aide de l’IA. Citamos : Datos brillantes, Octoparse, Apify, etc.

preguntas frecuentes
¿Cómo puedo scrapear un sitio web protegido por login con Laravel?
C’est l’un des défis les plus courants en web scraping. Pour y parvenir avec Laravel, il faut :
- Simular la conexión con una solicitud POST, enviando la dirección de correo electrónico y la contraseña.
- Gestión de cookies o la sesión para acceder a páginas protegidas.
¿Cómo se gestiona la paginación al hacer web scraping con Laravel?
Pour gérer la navigation d’une page à l’autre avec Laravel, vous devez :
- Raspar la primera página.
- Détecter le lien “page suivante” con un selector CSS.
- Bucle en cada enlace jusqu’à la fin de la pagination.
¿Cómo se exportan los datos raspados (a CSV, Excel o JSON)?
Con Laravel, puede utilizar :
fputcsv()para CSV.- la librería
MaatwebsiteExcelpara Excel. - La función nativa
json_encode()para generar un archivo JSON.
¿Cómo se gestionan los errores y las excepciones durante el scraping?
Para manejar las solicitudes fallidas con Laravel, es necesario :
- Encapsular solicitudes en un
try/catch. - Vérifier les codes d’état HTTP (404, 500, etc.). En cas d’erreur, les logger ou programmer un nouvel essai.
¿Es legal o ilegal el web scraping?
Él legalidad del web scraping est un sujet complexe. Tout dépend du site ciblé et de l’usage des données.
📌 El web scraping en Francia est souvent discuté dans le cadre du droit d’auteur et de la protection des bases de données.
💬 En resumen web scraping con Laravel es potente y flexible, pero requiere buenas prácticas para seguir siendo eficaz y legal. Díganos lo que piensa en los comentarios.





