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.

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->request('GET', $this->url);
// Contoh sederhana: ekstrak semua <h1>
$titles = $crawler->filter('h1')->each(function ($node) {
kembalikan $node->text();
});
// Ketekunan / log / peristiwa...
foreach ($titles as $title) {
\Log::info("[Scraping] {$this->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.

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 :
- Mensimulasikan koneksi dengan permintaan POST, mengirimkan alamat email dan kata sandi.
- 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 :
- Mengikis halaman pertama.
- Détecter le lien “page suivante” dengan pemilih CSS.
- 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
MaatwebsiteExceluntuk 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 :
- Merangkum permintaan dalam
coba/tangkap. - 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.





