il scraping del web con Laravel combina la potenza del framework PHP e delle librerie specializzate per automatizzare l'estrazione dei dati.
Si tratta di una soluzione affidabile per raccogliere, elaborare e organizzare informazioni online. Scopriamo insieme in questo articolo come fare scraping del web con Laravel.

Prerequisiti per lo scraping con Laravel
Laravel è un Struttura PHP ampiamente utilizzato per sviluppare le moderne applicazioni web.
Grazie al suo ricco ecosistema, offre un ambiente ideale per sviluppare scraping del web con PHP in modo organizzato e manutenibile. Per cominciare, è importante :
- 🔥 Padroneggiare le basi di PHP e Laravel.
- 🔥 Comprensione di HTML e CSS per gli elementi di destinazione.
- 🔥 Saper manipolare Composer per installare i pacchetti.
👉 Gli strumenti essenziali sono:
- Goccia : la libreria PHP di riferimento. Semplifica le richieste e l'estrazione dei dati.
- Burattinaio/Cromo senza testa Un browser senza testa. Essenziale per lo scraping di pagine che utilizzano molto JavaScript.
- Client HTTP di Laravel permette di effettuare interrogazioni con
Http::get()per recuperare contenuti semplici.
Tutorial per creare il vostro primo scraper con Laravel
Seguite questo tutorial passo passo per creare uno scraper funzionale con Laravel.
⚠ Rispettate sempre i termini e le condizioni d'uso dei siti web, il robots.txt e della legislazione locale. Limitare il carico (rate-limit), identificare un User-Agent e non raccogliere dati sensibili.
Passo 1: installazione e configurazione
Creare un nuovo progetto Laravel e aggiungere Goutte (integrazione Laravel).
# 1) Creare un nuovo progetto Laravel
comporre creare-progetto laravel/laravel scraper-demo
cd scraper-demo
# 2) Aggiungere Goutte (integrazione di Laravel)
composer require weidner/goutte
Fase 2: Creare un ordine artigianale
Generare un comando contenente la logica di scraping:
php artisan make:command ScrapeData
Il file viene creato qui : app/Console/Comandi/ScrapeData.php.
Passo 3: scrivere il codice dello scraper
Nel comando generato, aggiungere :
- Uno Richiesta HTTP per recuperare il contenuto HTML.
- ✅ Des Selettori CSS per indirizzare i dati.
- Uno anello per sfogliare gli elementi e visualizzare i risultati.
Ecco un esempio di codice completo per estrarre i titoli degli articoli di un blog:
info("Scraping: {$url}");
// 1) Richiesta HTTP per recuperare l'HTML
$crawler = Goutte::request('GET', $url);
// 2) Uso dei selettori CSS
$nodes = $crawler->filtro('h2 a');
// 3) Eseguire un loop sugli elementi e visualizzarli
$nodes->each(function (Crawler $node, $i) {
$title = $node->text();
$link = $node->attr('href');
$this->linea(($i+1) . ". " . $title . " - " . $link);
});
restituire self::SUCCESS;
}
}
Migliori pratiche per lo scraping del web con Laravel
Per fare Per eseguire efficacemente il web scraping con Laravel, ecco alcuni consigli da tenere a mente:
1. Gestione delle attività e delle code
Lo scraping può richiedere diversi secondi per pagina. Immaginate se doveste fare lo scraping di 1000 pagine, la vostra applicazione Laravel sarebbe bloccata e inutilizzabile per molto tempo. La soluzione: il lavori e il Code di Laravel.
- UN lavoro, è un'attività che desideri eseguire in background.
- Una coda (coda), è il luogo in cui vengono archiviati questi lavori affinché vengano eseguiti gradualmente, senza bloccare il resto.
👉 Ecco un esempio per incapsulare la logica di scraping in un lavoro :
// 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;
}
funzione pubblica handle(): void
{
$client = new Client();
$crawler = $client->request('GET', $this->url);
// Esempio semplice: estrarre tutti i dati <h1>
$titoli = $crawler->filtro('h1')->each(function ($node) {
return $node->text();
});
// Persistenza / registri / eventi...
foreach ($titles as $title) {
\Log::info("[Scraping] {$this->url} - H1: {$title}");
}
}
}
// app/Http/Controllers/ScraperController.php
onQueue('scraping'); // se si vuole una coda dedicata
}
return response()->json(['status' => 'Scraping in esecuzione in background 🚀']);
}
}
👉 Come avete visto, i lavori vengono inseriti in una coda (file d'attesa). Laravel offre diversi sistemi per gestire questa coda. I più utilizzati sono:
- La coda con il database I lavori vengono memorizzati come righe in una tabella SQL e poi eseguiti uno per uno da un sistema worker.
- La coda con Redis I lavori vengono inseriti in memoria in una coda ultraveloce, ideale per l'elaborazione di un grande volume di attività.
2. Automazione con il task scheduler di Laravel
Laravel integra un schedulatore di attività (scheduler) che consente di’automatizzare lo scraping.
Così è possibile pianificare l'esecuzione di un ordine di scraping a intervalli regolari, ad esempio ogni ora.
👉 Ecco come eseguirlo in app/Console/Kernel.php :
.
spazio dei nomi App\Console;
utilizzare IlluminateConsoleSchedulingSchedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
classe Kernel estende ConsoleKernel
{
/**
* Pianifica i comandi artigianali.
*/
protected function schedule(Schedule $schedule): void
{
// Ogni ora
$schedule->comando('scraper:run')->ora();
// Esempi utili :
// $schedule->command('scraper:run')->everyFifteenMinutes();
// $schedule->command('scraper:run')->dailyAt('02:30')->timezone('Indian/Antananarivo');
}
/**
* Registrazione degli ordini.
*/
funzione protetta comandi(): void
{
$this->load(__DIR__ . '/Comandi');
}
}
3. Bypassare la protezione anti-scraping
Molti siti implementano protezioni contro gli scraper. Per evitare di essere bloccati, è meglio:
- ✅ Modificare l'User-Agent simulare un browser reale.
- ✅ Gestione delle scadenze inserire pause (sleep, throttle) tra le richieste, in modo da non sovraccaricare il server di destinazione.
- ✅ Utilizzo di proxy Distribuire le richieste su più indirizzi IP.
Quali sono le alternative al web scraping con Laravel?
Sebbene Laravel sia utile per integrare lo scraping in un'applicazione PHP, esistono altre soluzioni spesso più specializzate.
Python è il linguaggio più utilizzato per lo scraping. Dispone di potenti librerie come Scrapy e BeautifulSoup.
- Strumenti senza codice
Sempre più strumenti consentono di effettuare lo scraping senza codifica Dove con l'aiuto dell'IA. Citiamo : Dati luminosi, Octoparse, Apify, eccetera.

Domande frequenti
Come si esegue lo scraping di un sito web protetto da login con Laravel?
Questa è una delle sfide più comuni nel web scraping. Per riuscirci con Laravel, è necessario:
- Simulare la connessione con una richiesta POST, inviando l'indirizzo e-mail e la password.
- Gestione dei cookie o la sessione per accedere alle pagine protette.
Come si gestisce la paginazione durante il web scraping con Laravel?
Per gestire la navigazione da una pagina all'altra con Laravel, è necessario:
- Scorrimento della prima pagina.
- Rilevare il link “pagina successiva” con un selettore CSS.
- Eseguire un loop su ogni collegamento fino alla fine dell'impaginazione.
Come si esportano i dati di scraping (in CSV, Excel o JSON)?
Con Laravel, è possibile utilizzare i file :
fputcsv()per CSV.- la libreria
Sito webExcelper Excel. - La funzione nativa
json_encode()per generare un file JSON.
Come si gestiscono gli errori e le eccezioni durante lo scraping?
Per gestire le richieste fallite con Laravel, è necessario :
- Incapsulamento delle richieste in un
try/catch. - Verificare i codici di stato HTTP (404, 500, ecc.). In caso di errore, registrare o programmare un nuovo tentativo.
Il web scraping è legale o illegale?
Il legalità del web scraping è un argomento complesso. Tutto dipende dal sito di destinazione e dall'uso dei dati.
📌 Il web scraping in Francia è spesso oggetto di discussione nell'ambito del diritto d'autore e della protezione delle banche dati.
💬 In breve, il scraping del web con Laravel è potente e flessibile, ma richiede buone pratiche per rimanere efficace e legale. Diteci cosa ne pensate nei commenti.





