Untuk contoh di sini saya pakai diDOM
<?php
require 'vendor/autoload.php'; // Pastikan DiDOM terinstall melalui Composer
use DiDom\Document;
$max_pages = 5; // Jumlah halaman yang ingin di-scrape
for ($page = 1; $page <= $max_pages; $page++) {
$url = "https://peraturan.go.id/cariglobal?PeraturanSearch%5Bidglobal%5D=&page=$page";
$options = [
'http' => [
'method' => 'GET',
'header' => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
]
];
$context = stream_context_create($options);
$html = file_get_contents($url, false, $context);
// Cek apakah HTML berhasil diambil
if (!$html) {
die("Gagal mengambil data dari URL pada halaman $page.\n");
}
$document = new Document();
$document->loadHtml($html);
// Mencari semua elemen dalam <div class="strip grid">
$items = $document->find('div.strip.grid');
foreach ($items as $item) {
// Mendapatkan jenis peraturan
$jenis = $item->first('a.float-right') ? trim($item->first('a.float-right')->text()) : 'Tidak tersedia';
// Mendapatkan judul peraturan
$judul = $item->first('p') ? trim($item->first('p')->text()) : 'Tidak tersedia';
// Mendapatkan link dokumen PDF
$pdf = $item->first('a[target="_blank"]') ? trim($item->first('a[target="_blank"]')->getAttribute('href')) : 'Tidak tersedia';
// Mendapatkan link detail peraturan dan uraian
$detail_link_element = $item->first('p a[data-pjax="0"]');
$link = $detail_link_element ? trim($detail_link_element->getAttribute('href')) : 'Tidak tersedia';
$uraian = $detail_link_element ? trim($detail_link_element->text()) : 'Tidak tersedia';
// Mendapatkan nama kementerian atau lembaga yang mengeluarkan peraturan
$lembaga_element = $item->first('div.score span.loc_open');
$lembaga = $lembaga_element ? trim($lembaga_element->text()) : 'Tidak tersedia';
echo "Halaman: $page\n";
echo "Jenis: $jenis\n";
echo "Judul: $judul\n";
echo "PDF: $pdf\n";
echo "Link: $link\n";
echo "Uraian: $uraian\n";
echo "Lembaga: $lembaga\n";
echo "-----------------------------\n";
}
}
Contoh kode ini akan scrape 5 halaman pertama di pencarian peraturan.go.id
Top comments (0)