la raspado web con Laravel combina la potencia del framework PHP y librerías especializadas para automatizar la extracción de datos.
Es una solución robusta para recopilar, procesar y organizar información en línea. Descubramos juntos en este artículo cómo hacer 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 biblioteca PHP de referencia. Simplifica las consultas y la extracción de datos.
- 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 para extraer los títulos de los artículos de 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. Gestión de tareas y colas
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, Es una tarea que desea ejecutar en segundo plano.
- A cola (cola de espera), es el lugar donde se almacenan estos trabajos para que se ejecuten poco a poco, sin bloquear el resto.
👉 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 🚀']);
}
}
👉 Como has visto, los trabajos se colocan en una cola (lista de espera). Laravel ofrece varios sistemas para gestionar esta cola. Los más utilizados son:
- La cola con la base de datos Los trabajos se almacenan como filas en una tabla SQL y luego se ejecutan uno a uno por un worker.
- La cola con 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 (programador) que permite’automatizar el raspado.
Así que puedes planificar la ejecución de una orden de scraping a intervalos regulares, por ejemplo cada hora.
👉 Así es como se ejecuta en 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
Muchos sitios web implementan protecciones contra los scrapers. Para evitar ser bloqueado, es mejor:
- ✅ Cambiar el agente de usuario 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?
Aunque Laravel es útil para integrar el scraping en una aplicación PHP, existen otras soluciones que suelen ser más especializadas.
Python es el lenguaje más utilizado para el scraping. Cuenta con potentes bibliotecas como Scrapy y BeautifulSoup.
- Herramientas sin código
Cada vez hay más herramientas que permiten realizar scraping. sin codificación Donde con la ayuda de la IA. Citamos : Datos brillantes, Octoparse, Apify, etc.

preguntas frecuentes
¿Cómo puedo scrapear un sitio web protegido por login con Laravel?
Este es uno de los retos más comunes en el web scraping. Para lograrlo con Laravel, es necesario:
- 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?
Para gestionar la navegación entre páginas con Laravel, debes:
- Raspar la primera página.
- Detectar el enlace “página siguiente” con un selector CSS.
- Bucle en cada enlace hasta el final de la paginación.
¿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. - Comprobar los códigos de estado HTTP (404, 500, etc.). En caso de error, registrarlo o programar una nueva prueba.
¿Es legal o ilegal el web scraping?
Él legalidad del web scraping es un tema complejo. Todo depende del sitio web en cuestión y del uso que se haga de los datos.
📌 El web scraping en Francia Se debate a menudo en el contexto de los derechos de autor y la protección de las bases de datos.
💬 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.





