Wie kann man mit Laravel Web Scraping betreiben?

Autor :

Reagieren :

Kommentieren

das Web Scraping mit Laravel kombiniert die Leistungsfähigkeit des PHP-Frameworks und der spezialisierten Bibliotheken, um die Datenextraktion automatisieren.

Es handelt sich um eine robuste Lösung zum Sammeln, Verarbeiten und Organisieren von Informationen im Internet. In diesem Artikel erfahren wir gemeinsam, wie man web scraping mit Laravel.

Laravel verwendet PHP als Motor und bietet eine organisierte Struktur und integrierte Werkzeuge, um das Web-Scraping zu erleichtern.
Laravel verwendet PHP als Engine und bietet eine organisierte Struktur und integrierte Tools, um das Web-Scraping zu erleichtern. Christina für Alucare.fr

Voraussetzungen für das Scraping mit Laravel

Laravel ist ein PHP-Framework weit verbreitet, um moderne Webanwendungen zu entwickeln.

Dank seines reichhaltigen Ökosystems bietet es eine ideale Umgebung, um den web scraping mit PHP auf organisierte und wartbare Weise. Zu Beginn ist es wichtig, dass Sie :

  • 🔥 Beherrschen Sie die Grundlagen von PHP und Laravel.
  • 🔥 HTML und CSS verstehen, um Elemente gezielt anzusprechen.
  • 🔥 Wissen, wie man Composer manipuliert, um Pakete zu installieren.

👉 Die wichtigsten Werkzeuge sind :

  • Tropfen : die Referenz-PHP-Bibliothek. Sie vereinfacht Abfragen und die Extraktion von Daten.
  • Puppeteer/Headless Chrome : ein kopfloser Browser. Unerlässlich, um Seiten zu scrapen, die viel JavaScript verwenden.
  • HTTP-Client von Laravel : ermöglicht Abfragen mit Http::get() um einfache Inhalte abzurufen.

Tutorial zum Erstellen des ersten Scrapers mit Laravel

Folgen Sie diesem Schritt-für-Schritt-Tutorial, um einen funktionierenden Scraper mit Laravel zu erstellen.

⚠ Beachten Sie stets die Nutzungsbedingungen der Seiten, das robots.txt und der lokalen Gesetzgebung. Begrenzen Sie die Belastung (rate-limit), identifizieren Sie einen User-Agent und sammeln Sie keine sensiblen Daten.

Schritt 1: Installation und Konfiguration

Erstellen Sie ein neues Laravel-Projekt und fügen Sie Goutte (Laravel-Integration) hinzu.

# 1) Erstellen Sie ein neues Laravel-Projekt.
composer create-project laravel/laravel scraper-demo
cd scraper-demo

# 2) Fügen Sie Goutte (Laravel-Integration) hinzu.
composer require weidner/goutte

Schritt 2: Erstellen Sie einen Handwerksauftrag

Generieren Sie einen Befehl, der Ihre Scraping-Logik enthält:

php artisan make:command ScrapeData

Die Datei wird hier erstellt : app/Console/Commands/ScrapeData.php.

Schritt 3: Den Scraper-Code schreiben

Fügen Sie in dem erzeugten Befehl :

  • ✅ Eine HTTP-Anfrage um den HTML-Inhalt abzurufen.
  • ✅ Des CSS-Selektoren um die Daten gezielt einzusetzen.
  • ✅ Eine Schleife um die Elemente zu durchsuchen und die Ergebnisse anzuzeigen.

Hier ist ein Beispiel für vollständiger Code um die Titel von Blog-Artikeln zu scrapen:

info("Scraping: {$url}");

        // 1) HTTP-Anfrage, um HTML abzurufen.
        $crawler = Goutte::request('GET', $url);

        // 2) Verwendung von CSS-Selektoren.
        $nodes = $crawler->filter('h2 a');

        // 3) Schleife über Elemente und Anzeige
        $nodes->each(function (Crawler $node, $i) {
            $title = $node->text();
            $link = $node->attr('href');
            $this->line(($i+1) . ". " . $title . " - " . $link);
        });

        return self::SUCCESS;
    }
}

Best Practices für das Web Scraping mit Laravel

Um Du web scraping effektiv mit Laravel zu betreiben, sollten Sie folgende Tipps beachten:

1. Aufgabenverwaltung und Warteschlangenverwaltung

Das Scraping kann pro Seite mehrere Sekunden dauern. Stellen Sie sich vor, Sie müssten 1000 Seiten scrapen, dann würde Ihre Laravel-Anwendung für eine ganze Weile hängen bleiben und unbrauchbar sein. Die Lösung: die jobs und das Laravel-Schwänze.

  • EIN job, ist eine Aufgabe, die Sie im Hintergrund ausführen möchten.
  • A Schwanz (Warteschlange) ist der Ort, an dem diese Jobs gespeichert werden, damit sie nach und nach ausgeführt werden können, ohne den Rest zu blockieren.

👉 Hier ein Beispiel von Code, um die Scraping-Logik in einem Job zu verkapseln:

// 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 = new Client();

        $crawler = $client-&gt;request('GET', $this-&gt;url);

        // Einfaches Beispiel: Extrahieren Sie alle <h1>
        $titles = $crawler-&gt;filter('h1')-&gt;each(function ($node) {
            return $node-&gt;text();
        });

        // Persistenz / Logs / Events...
        foreach ($titles as $title) {
            \Log::info("[Scraping] {$this-&gt;url} - H1: {$title}");
        }
    }
}

// app/Http/Controllers/ScraperController.php
onQueue('scraping'); // wenn du eine dedizierte Warteschlange haben möchtest.
        }

        return response()->json(['status' => 'Scraping im Hintergrund gestartet 🚀']);
    }
}

👉 Wie Sie gesehen haben, werden die Jobs in eine Warteschlange gestellt. Laravel bietet mehrere Systeme zur Verwaltung dieser Warteschlange. Die am häufigsten verwendeten sind:

  • Die Warteschlange mit der Datenbank : Jobs werden als Zeilen in einer SQL-Tabelle gespeichert und dann nacheinander von einem worker.
  • Die Warteschlange mit Redis : Jobs werden im Speicher in einer ultraschnellen Warteschlange abgelegt, die ideal ist, um ein großes Volumen an Aufgaben zu verarbeiten.

2. Automatisierung mit dem Aufgabenplaner von Laravel

Laravel integriert einen Aufgabenplaner (Scheduler), der es ermöglicht,’Scraping automatisieren.

So können Sie die Ausführung eines Scraping-Auftrags planen in regelmäßigen Abständen, z. B. jede Stunde.

👉 So führen Sie es aus in app/Console/Kernel.php :

command('scraper:run')->hourly();

    // Nützliche Beispiele :
    // $schedule->command('scraper:run')->everyFifteenMinutes();
    // $schedule->command('scraper:run')->dailyAt('02:30')->timezone('Indian/Antananarivo');
}

/**
 * Aufnahme von Bestellungen.
 */
protected function commands(): void
{
    $this->load(__DIR__ . '/Commands');
}


}

3. Umgehen von Anti-Scraping-Schutzmaßnahmen

Viele Websites richten Schutzmaßnahmen gegen Scraper ein. Um eine Sperrung zu vermeiden, sollten Sie Folgendes beachten:

  • ✅ User-Agent ändern : Simulieren Sie einen echten Browser.
  • Fristen verwalten : fügen Sie Pausen ein (sleep, throttle) zwischen den Anfragen, um den Zielserver nicht zu überlasten.
  • Proxys verwenden : Verteilen Sie die Anfragen auf mehrere IP-Adressen.

Welche Alternativen gibt es zum Web Scraping mit Laravel?

Auch wenn Laravel praktisch ist, um Scraping in eine PHP-Anwendung zu integrieren, gibt es andere Lösungen, die oft spezialisierter sind.

Python ist die am häufigsten verwendete Sprache für das Scraping. Sie verfügt über leistungsfähige Bibliotheken wie Scrapy und BeautifulSoup.

  • Werkzeuge ohne Code

Es gibt immer mehr Tools, die das Scraping ermöglichen. ohne zu codieren Wo mit Hilfe von KI. Wir zitieren: Bright Data, Octoparse, Apify, etc.

Lösungen wie Bright Data ermöglichen eine schnelle Datenerfassung ohne Verschlüsselung.
Lösungen wie Bright Data ermöglichen eine schnelle Datenerfassung ohne Verschlüsselung. Christina für Alucare.fr

Häufig gestellte Fragen

Wie kann man eine login-geschützte Website mit Laravel scrapen?

Dies ist eine der häufigsten Herausforderungen beim Web Scraping. Um dies mit Laravel zu erreichen, müssen Sie:

  1. Verbindung simulieren mit einer POST-Anfrage, indem Sie die E-Mail und das Passwort senden.
  2. Cookies verwalten oder die Sitzung, um auf die geschützten Seiten zuzugreifen.

Wie verwalte ich die Paginierung beim Web Scraping mit Laravel?

Um die Navigation von einer Seite zur anderen mit Laravel zu verwalten, müssen Sie:

  1. Die erste Seite scrapen.
  2. Den Link “nächste Seite” erkennen” mit einem CSS-Selektor.
  3. Schleife auf jeden Link bis zum Ende der Paginierung.

Wie exportiere ich die gescrappten Daten (nach CSV, Excel oder JSON)?

Mit Laravel können Sie :

  • fputcsv() für CSV.
  • die Buchhandlung Maatwebsiteexcel für Excel.
  • Die native Funktion json_encode() um eine JSON-Datei zu erzeugen.

Wie gehe ich mit Fehlern und Ausnahmen während des Scrapings um?

Um mit fehlgeschlagenen Anfragen mit Laravel umzugehen, müssen Sie :

  1. Kapselung von Abfragen in einem try/catch.
  2. HTTP-Statuscodes überprüfen (404, 500 usw.). Im Fehlerfall protokollieren oder einen neuen Versuch programmieren.

Ist Web Scraping legal oder illegal?

Das Legalität von Web Scraping ist ein komplexes Thema. Alles hängt vom Zielort und der Verwendung der Daten ab.

📌 Der web scraping in Frankreich wird häufig im Zusammenhang mit dem Urheberrecht und dem Schutz von Datenbanken diskutiert.

💬 Kurz gesagt, der web scraping mit Laravel ist leistungsstark und flexibel, erfordert aber gute Praktiken, um effektiv und legal zu bleiben. Sagen Sie uns in den Kommentaren, was Sie davon halten.

Gefällt es Ihnen? Teilen Sie es!

Dieser Inhalt ist ursprünglich auf Französisch (Siehe den Redakteur oder die Redakteurin direkt unten.). Er wurde mit Deepl und/oder der Google-Übersetzungs-API in verschiedene Sprachen übersetzt und anschließend Korrektur gelesen, um in möglichst vielen Ländern Hilfe anbieten zu können. Diese Übersetzung kostet uns mehrere Tausend Euro pro Monat. Wenn sie zu 100 % nicht perfekt ist, hinterlassen Sie uns bitte einen Kommentar, damit wir sie korrigieren können. Wenn Sie daran interessiert sind, übersetzte Artikel zu lektorieren und ihre Qualität zu verbessern, schicken Sie uns bitte eine E-Mail über das Kontaktformular!
Wir freuen uns über Ihr Feedback, um unsere Inhalte zu verbessern. Wenn Sie Verbesserungsvorschläge machen möchten, nutzen Sie bitte unser Kontaktformular oder hinterlassen Sie unten einen Kommentar. Ihr Feedback hilft uns immer, die Qualität unserer Website zu verbessern Alucare.fr


Alucare ist ein unabhängiges Medium. Unterstützen Sie uns, indem Sie uns zu Ihren Google News-Favoriten hinzufügen:

Veröffentlichen Sie einen Kommentar im Diskussionsforum