Bagaimana cara menggunakan Laravel untuk web scraping?

Penulis :

Bereaksi :

Komentar

itu pengikisan web dengan Laravel menggabungkan kekuatan kerangka kerja PHP dan pustaka khusus untuk 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 dengan Laravel.

Laravel menggunakan PHP sebagai mesinnya, menawarkan struktur yang terorganisir dan alat yang terintegrasi untuk membuat web scraping lebih mudah.
Laravel menggunakan PHP sebagai mesinnya, menawarkan struktur yang terorganisir dan alat yang terintegrasi untuk membuat scraping web menjadi lebih mudah. Cristina untuk Alucare.fr

Prasyarat untuk melakukan scraping dengan Laravel

Laravel adalah sebuah Kerangka kerja PHP banyak digunakan untuk mengembangkan aplikasi web modern.

Berkat ekosistemnya yang kaya, tempat ini menawarkan lingkungan yang ideal untuk mengembangkan scraping web dengan PHP dengan cara yang terorganisir dan dapat dipelihara. Untuk memulainya, penting untuk :

  • 🔥 Menguasai dasar-dasar PHP dan Laravel.
  • 🔥 Memahami HTML dan CSS untuk menargetkan elemen.
  • 🔥 Ketahui cara memanipulasi Composer untuk menginstal paket.

👉 Alat bantu yang penting adalah:

  • Jatuhkan. : la bibliothèque PHP de référence. Elle simplifie les requêtes et l’extraction de données.
  • Dalang / Chrome Tanpa Kepala Peramban tanpa kepala. Sangat penting untuk mengikis halaman yang menggunakan banyak JavaScript.
  • Klien HTTP Laravel memungkinkan Anda membuat kueri dengan Http::get() untuk mengambil konten sederhana.

Tutorial untuk membuat scraper pertama Anda dengan Laravel

Ikuti tutorial langkah demi langkah ini untuk membuat scraper fungsional dengan Laravel.

⚠ Selalu patuhi syarat dan ketentuan penggunaan situs robots.txt dan undang-undang setempat. Batasi beban (batas kecepatan), identifikasi Agen-Pengguna dan jangan mengumpulkan data sensitif.

Langkah 1: Instalasi dan konfigurasi

Buat proyek Laravel baru dan tambahkan Goutte (integrasi Laravel).

# 1) Membuat proyek Laravel baru
compose create-project laravel/laravel scraper-demo
cd scraper-demo

# 2) Menambahkan Goutte (Integrasi Laravel)
composer membutuhkan weidner/goutte

Langkah 2: Membuat pesanan kerajinan tangan

Buat perintah yang berisi logika pengikisan Anda:

php artisan make:command ScrapeData

File dibuat di sini : app/Console/Commands/ScrapeData.php.

Langkah 3: Tulis kode pengikis

Dalam perintah yang dihasilkan, tambahkan :

  • ✅ Satu Permintaan HTTP untuk mengambil konten HTML.
  • ✅ Des Pemilih CSS untuk menargetkan data.
  • ✅ Satu lingkaran untuk menelusuri item dan menampilkan hasilnya.

Berikut ini adalah contoh dari kode lengkap pour scraper les titres d’articles d’un blog :

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

        // 1) Permintaan HTTP untuk mengambil HTML
        $crawler = Goutte::request('GET', $url);

        // 2) Penggunaan pemilih CSS
        $nodes = $crawler->filter('h2 a');

        // 3) Perulangan elemen dan tampilan
        $nodes->each(function (Crawler $node, $i) {
            $title = $node->text();
            $link = $node->attr('href');
            $this->line(($i+1) . ". " . $title . " - " . $link);
        });

        return self::SUKSES;
    }
}

Praktik terbaik untuk web scraping dengan Laravel

Untuk membuat web scraping secara efektif dengan Laravel, berikut adalah beberapa tips yang perlu diingat:

1. Gestion des tâches et de la mise en file d’attente

Scraping dapat memakan waktu beberapa detik per halaman. Bayangkan jika Anda harus mengikis 1000 halaman, aplikasi Laravel Anda akan diblokir dan tidak dapat digunakan untuk waktu yang lama. Solusinya: metode pekerjaan dan Ekor Laravel.

  • A pekerjaan, c’est une tâche que vous voulez exécuter en arrière-plan.
  • A ekor (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.

👉 Berikut ini contohnya untuk merangkum logika pengikisan dalam 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 = new Client();

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

        // Contoh sederhana: ekstrak semua <h1>
        $titles = $crawler-&gt;filter('h1')-&gt;each(function ($node) {
            kembalikan $node-&gt;text();
        });

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

// app/Http/Controllers/ScraperController.php
onQueue('scraping'); // jika Anda menginginkan antrian khusus
        }

        return response()->json(['status' => 'Scraping berjalan di latar belakang 🚀']);
    }
}

👉 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 pekerjaan disimpan sebagai baris dalam tabel SQL, kemudian dieksekusi satu per satu oleh worker.
  • La file d’attente avec Redis Pekerjaan ditempatkan dalam memori dalam antrean yang sangat cepat, ideal untuk memproses tugas dalam jumlah besar.

2. Otomatisasi dengan penjadwal tugas Laravel

Laravel mengintegrasikan sebuah penjadwal tugas (scheduler) qui permet d’mengotomatiskan pengikisan.

Jadi, Anda bisa planifier l’exécution d’une commande de scraping secara berkala, misalnya setiap jam.

👉 Voici comment l’exécuter dans app/Console/Kernel.php :

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

    // Contoh yang berguna :
    // $schedule->command('scraper:run')->setiapLimaBelasMenit();
    // $schedule->command('scraper:run')->dailyAt('02:30')->timezone('Indian/Antananarivo');
}

/**
 * Pendaftaran pesanan.
 */
fungsi protected commands(): void
{
    $this->load(__DIR__ . '/Perintah');
}


}

3. Melewati perlindungan anti-gores

Beaucoup de sites mettent en place des protections contre les scrapers. Pour éviter d’être bloqué, il est mieux de :

  • ✅ Changer l’User-Agent mensimulasikan peramban yang sebenarnya.
  • Mengelola tenggat waktu menyisipkan jeda (sleep, throttle) di antara permintaan agar tidak membebani server target.
  • Menggunakan proxy Mendistribusikan permintaan melalui beberapa alamat IP.

Apa saja alternatif lain dari web scraping dengan 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 adalah bahasa yang paling banyak digunakan untuk scraping. Bahasa ini memiliki pustaka yang kuat seperti Scrapy dan BeautifulSoup.

  • Alat bantu bebas kode

De plus en plus d’outils permettent de faire du scraping tanpa pengkodean Di mana dengan bantuan kecerdasan buatan. Kami mengutip: Data Cerah, Octoparse, Apifydll.

Solusi seperti Bright Data memungkinkan Anda mengumpulkan data dengan cepat tanpa pengkodean.
Solusi seperti Bright Data memungkinkan untuk mengumpulkan data dengan cepat tanpa pengkodean. Cristina untuk Alucare.fr

FAQ

Bagaimana cara mengikis situs web yang diproteksi login dengan Laravel?

C’est l’un des défis les plus courants en web scraping. Pour y parvenir avec Laravel, il faut :

  1. Mensimulasikan koneksi dengan permintaan POST, mengirimkan alamat email dan kata sandi.
  2. Mengelola cookie atau sesi untuk mengakses halaman yang dilindungi.

Bagaimana cara mengelola pagination ketika melakukan web scraping dengan Laravel?

Pour gérer la navigation d’une page à l’autre avec Laravel, vous devez :

  1. Mengikis halaman pertama.
  2. Détecter le lien “page suivante” dengan pemilih CSS.
  3. Ulangi pada setiap tautan jusqu’à la fin de la pagination.

Bagaimana cara mengekspor data yang dikikis (ke CSV, Excel, atau JSON)?

Dengan Laravel, Anda dapat menggunakan file :

  • fputcsv() untuk CSV.
  • toko buku MaatwebsiteExcel untuk Excel.
  • Fungsi asli json_encode() untuk menghasilkan file JSON.

Bagaimana Anda menangani kesalahan dan pengecualian selama pengikisan?

Untuk menangani permintaan yang gagal dengan Laravel, Anda perlu :

  1. Merangkum permintaan dalam coba/tangkap.
  2. Vérifier les codes d’état HTTP (404, 500, etc.). En cas d’erreur, les logger ou programmer un nouvel essai.

Apakah web scraping legal atau ilegal?

Itu legalitas web scraping est un sujet complexe. Tout dépend du site ciblé et de l’usage des données.

📌 The pengikisan web di Prancis est souvent discuté dans le cadre du droit d’auteur et de la protection des bases de données.

💬 Singkatnya, proses web scraping dengan Laravel sangat kuat dan fleksibel, tetapi membutuhkan praktik yang baik agar tetap efektif dan legal. Beritahu kami pendapat Anda di kolom komentar.

Suka? Bagikan!

Konten ini aslinya adalah di Perancis (Lihat editor tepat di bawah). Buku ini telah diterjemahkan dan dikoreksi dalam berbagai bahasa menggunakan Deepl dan/atau Google Translate API untuk menawarkan bantuan di sebanyak mungkin negara. Penerjemahan ini menghabiskan biaya beberapa ribu euro per bulan. Jika terjemahan ini tidak 100 % sempurna, tinggalkan komentar agar kami dapat memperbaikinya. Jika Anda tertarik untuk mengoreksi dan meningkatkan kualitas artikel yang diterjemahkan, silakan kirim email kepada kami menggunakan formulir kontak!
Kami menghargai umpan balik Anda untuk meningkatkan konten kami. Jika Anda ingin memberikan saran perbaikan, silakan gunakan formulir kontak kami atau tinggalkan komentar di bawah ini. Komentar Anda selalu membantu kami meningkatkan kualitas situs web kami Alucare.fr


Alucare adalah media independen. Dukung kami dengan menambahkan kami ke favorit Google News Anda:

Kirimkan komentar di forum diskusi