Bagaimana cara menggunakan Laravel untuk web scraping?

Penulis :

Bereaksi :

Komentar

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.

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. : 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-&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 🚀']);
    }
}

👉 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.

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?

Ini adalah salah satu tantangan paling umum dalam web scraping. Untuk melakukannya dengan Laravel, Anda perlu:

  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?

Untuk mengelola navigasi dari satu halaman ke halaman lain dengan Laravel, Anda harus:

  1. Mengikis halaman pertama.
  2. Deteksi tautan “halaman berikutnya” dengan pemilih CSS.
  3. 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 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. 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.

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