itu pengikisan web dengan Laravel menggabungkan kekuatan kerangka kerja PHP dan pustaka khusus untuk Mengotomatisasi ekstraksi data.
Ini adalah solusi yang andal untuk mengumpulkan, memproses, dan mengorganisir informasi secara online. Mari kita pelajari bersama dalam artikel ini bagaimana cara melakukannya. 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. : Perpustakaan PHP referensi. Perpustakaan ini memudahkan pembuatan permintaan dan pengambilan data.
- 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 Untuk mengekstrak judul artikel dari sebuah 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. Pengelolaan tugas dan antrian
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, Ini adalah tugas yang ingin Anda jalankan di latar belakang.
- A ekor (antrian), ini adalah tempat di mana pekerjaan-pekerjaan tersebut disimpan agar dapat dieksekusi secara bertahap, tanpa mengganggu yang lain.
👉 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 🚀']);
}
}
👉 Seperti yang Anda lihat, pekerjaan akan masuk ke dalam antrian. Laravel menawarkan beberapa sistem untuk mengelola antrian ini. Yang paling sering digunakan adalah:
- Antrian dengan basis data pekerjaan disimpan sebagai baris dalam tabel SQL, kemudian dieksekusi satu per satu oleh worker.
- Antrian dengan 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 (penjadwal) yang memungkinkan untuk’mengotomatiskan pengikisan.
Jadi, Anda bisa Merencanakan pelaksanaan perintah scraping secara berkala, misalnya setiap jam.
👉 Berikut cara menjalankannya di 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
Banyak situs web menerapkan perlindungan terhadap scraper. Untuk menghindari diblokir, sebaiknya:
- ✅ Mengubah 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?
Meskipun Laravel praktis untuk mengintegrasikan scraping ke dalam aplikasi PHP, ada solusi lain yang seringkali lebih spesifik.
Python adalah bahasa yang paling banyak digunakan untuk scraping. Bahasa ini memiliki pustaka yang kuat seperti Scrapy dan BeautifulSoup.
- Alat bantu bebas kode
Semakin banyak alat yang memungkinkan untuk melakukan 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?
Ini adalah salah satu tantangan paling umum dalam web scraping. Untuk melakukannya dengan Laravel, Anda perlu:
- 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?
Untuk mengelola navigasi dari satu halaman ke halaman lain dengan Laravel, Anda harus:
- Mengikis halaman pertama.
- Deteksi tautan “halaman berikutnya” dengan pemilih CSS.
- Ulangi pada setiap tautan sampai akhir halaman.
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. - Periksa kode status HTTP (404, 500, dll.). Jika terjadi kesalahan, catat atau jadwalkan percobaan baru.
Apakah web scraping legal atau ilegal?
Itu legalitas web scraping Ini adalah topik yang kompleks. Semuanya tergantung pada situs yang dituju dan penggunaan data.
📌 The pengikisan web di Prancis Sering dibahas dalam konteks hak cipta dan perlindungan basis data.
💬 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.





