det web scraping med Laravel kombinerer kraften i PHP-frameworket og specialiserede biblioteker til at automatisere dataudtræk.
Det er en robust løsning til at indsamle, behandle og organisere information online. Lad os sammen i denne artikel se på, hvordan man gør det. web scraping med Laravel.

Forudsætninger for scraping med Laravel
Laravel er en PHP-rammeværk meget brugt til at udvikle moderne webapplikationer.
Takket være sit rige økosystem tilbyder det et ideelt miljø til at udvikle web scraping med PHP på en organiseret og vedligeholdelsesvenlig måde. Til at begynde med er det vigtigt at :
- 🔥 Få styr på det grundlæggende i PHP og Laravel.
- 🔥 Forståelse af HTML og CSS for at målrette elementer.
- 🔥 Vide, hvordan man manipulerer Composer til at installere pakker.
👉 De vigtigste værktøjer er:
- Drop : den førende PHP-bibliotek. Det forenkler forespørgsler og udtrækning af data.
- Dukkefører/Hovedløs Chrome En hovedløs browser. Uundværlig til scraping af sider, der bruger meget JavaScript.
- Laravel HTTP-klient : giver dig mulighed for at lave forespørgsler med
Http::get()for at hente simpelt indhold.
Vejledning i at skabe din første scraper med Laravel
Følg denne trinvise vejledning for at skabe en funktionel scraper med Laravel.
⚠ Overhold altid vilkårene og betingelserne for brug af webstederne, de robots.txt og lokal lovgivning. Begræns belastningen (rate-limit), identificer en User-Agent, og indsaml ikke følsomme data.
Trin 1: Installation og konfiguration
Opret et nyt Laravel-projekt, og tilføj Goutte (Laravel-integration).
# 1) Opret et nyt Laravel-projekt
compose create-project laravel/laravel scraper-demo
cd scraper-demo
# 2) Tilføj Goutte (Laravel-integration)
composer kræver weidner/goutte
Trin 2: Opret en håndværksordre
Generer en kommando, der indeholder din scraping-logik:
php artisan make:command ScrapeData
Filen oprettes her : app/Konsol/Kommandoer/ScrapeData.php.
Trin 3: Skriv scraper-koden
I den genererede kommando skal du tilføje :
- ✅ En HTTP-anmodning for at hente HTML-indholdet.
- ✅ Des CSS-selektorer for at målrette dataene.
- ✅ En Sløjfe for at gennemse emnerne og vise resultaterne.
Her er et eksempel på komplet kode for at scrape titlerne på artikler fra en blog:
info("Scraping: {$url}");
// 1) HTTP-anmodning for at hente HTML'en
$crawler = Goutte::request('GET', $url);
// 2) Brug af CSS-selektorer
$nodes = $crawler->filter('h2 a');
// 3) Loop over elementer og visning
$nodes->each(function (Crawler $node, $i) {
$title = $node->text();
$link = $node->attr('href');
$this->line(($i+1) . ". " . $title . " - " . $link);
});
return self::SUCCESS;
}
}
Bedste praksis for webscraping med Laravel
At lave webscraping effektivt med Laravel, er der et par tips, du skal huske på:
1. Opgavehåndtering og køhåndtering
Scraping kan tage flere sekunder pr. side. Forestil dig, at du skulle scrape 1000 sider, så ville din Laravel-applikation være blokeret og ubrugelig i lang tid. Løsningen: den job og Laravel-haler.
- EN job, Det er en opgave, du vil udføre i baggrunden.
- EN Hale (kø), det er her, disse jobs gemmes, så de kan udføres lidt efter lidt uden at blokere resten.
👉 Her er et eksempel kode til at indkapsle scraping-logikken i et 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;
}
offentlig funktion handle(): void
{
$client = new Client();
$crawler = $client->request('GET', $this->url);
// Simpelt eksempel: udtræk alle <h1>
$titles = $crawler->filter('h1')->each(function ($node) {
return $node->text();
});
// Persistens / logs / events...
foreach ($titles as $title) {
\Log::info("[Scraping] {$this->url} - H1: {$title}");
}
}
}
// app/Http/Controllers/ScraperController.php
onQueue('scraping'); // hvis du vil have en dedikeret kø
}
return response()->json(['status' => 'Scraping kører i baggrunden 🚀']);
}
}
👉 Som du har set, sættes jobbene i en kø (waiting queue). Laravel tilbyder flere systemer til at administrere denne kø. De mest anvendte er:
- Køen med databasen job gemmes som rækker i en SQL-tabel og udføres derefter en efter en af en worker.
- Køen med Redis Job placeres i hukommelsen i en ultrahurtig kø, der er ideel til at behandle en stor mængde opgaver.
2. Automatisering med Laravel task scheduler
Laravel integrerer en opgaveplanlægger (scheduler), der gør det muligt atAutomatiser skrabning.
Så du kan planlægge udførelsen af en scraping-ordre med jævne mellemrum, f.eks. hver time.
👉 Sådan udfører du det i app/Konsol/Kernel.php :
command('scraper:run')->hourly();
// Nyttige eksempler :
// $schedule->command('scraper:run')->everyFifteenMinutes();
// $schedule->command('scraper:run')->dailyAt('02:30')->timezone('Indian/Antananarivo');
}
/**
* Registrering af ordrer.
*/
beskyttet funktion commands(): void
{
$this->load(__DIR__ . '/Commands');
}
}
3. Omgåelse af anti-scraping-beskyttelse
Mange websteder implementerer beskyttelse mod scrapere. For at undgå at blive blokeret er det bedst at:
- ✅ Skift brugeragent simulere en rigtig browser.
- ✅ Håndtering af deadlines indsæt pauser (sleep, throttle) mellem anmodninger for ikke at overbelaste målserveren.
- ✅ Brug af proxyer Fordel anmodninger over flere IP-adresser.
Hvad er alternativerne til webscraping med Laravel?
Selvom Laravel er praktisk til at integrere scraping i en PHP-applikation, findes der andre løsninger, der ofte er mere specialiserede.
Python er det mest udbredte sprog til scraping. Det har stærke biblioteker som Scrapy og BeautifulSoup.
- Kodefri værktøjer
Der findes stadig flere værktøjer til scraping. uden kodning Hvor med hjælp fra AI. Vi citerer: Lyse data, Oktoparse, Apify, etc.

Ofte stillede spørgsmål
Hvordan scraper jeg en login-beskyttet hjemmeside med Laravel?
Dette er en af de mest almindelige udfordringer ved webscraping. For at opnå dette med Laravel skal du:
- Simuler forbindelsen med en POST-anmodning, der sender e-mailadresse og adgangskode.
- Håndtering af cookies eller sessionen for at få adgang til beskyttede sider.
Hvordan håndterer du paginering, når du laver webscraping med Laravel?
For at administrere navigationen fra en side til en anden med Laravel skal du:
- Skrab den første side.
- Find linket "næste side" med en CSS-selektor.
- Loop på hvert link indtil slutningen af pagineringen.
Hvordan eksporterer jeg scrapede data (til CSV, Excel eller JSON)?
Med Laravel kan du bruge :
fputcsv()for CSV.- boghandlen
MaatwebsiteExceltil Excel. - Den oprindelige funktion
json_encode()for at generere en JSON-fil.
Hvordan håndterer du fejl og undtagelser under scraping?
For at håndtere mislykkede anmodninger med Laravel skal du :
- Indkapsling af anmodninger i en
try/catch. - Kontroller HTTP-statuskoder (404, 500 osv.). I tilfælde af fejl skal du logge eller programmere et nyt forsøg.
Er webscraping lovligt eller ulovligt?
Det Lovligheden af webscraping er et komplekst emne. Det afhænger helt af det pågældende websted og brugen af dataene.
📌 Den Webscraping i Frankrig diskuteres ofte i forbindelse med ophavsret og beskyttelse af databaser.
💬 Kort sagt, den web scraping med Laravel er stærk og fleksibel, men kræver god praksis for at forblive effektiv og lovlig. Fortæl os, hvad du synes i kommentarerne.





