Proyek ini bertujuan untuk melakukan scraping data sekolah dari situs resmi Direktorat Jenderal Pendidikan Dasar dan Menengah (Dikdasmen) Kemendikbud RI. Data yang diambil meliputi informasi lengkap sekolah termasuk data akreditasi dan referensi dari dua sumber:
- Data Referensi: https://sekolah.data.kemendikdasmen.go.id
- Fitur Utama
- Data yang Dikumpulkan
- Instalasi dan Setup
- Cara Penggunaan
- Fitur Resume/Checkpoint
- Struktur Output
- Tips dan Troubleshooting
- Catatan Penting
- Scraping Komprehensif: Mengambil data dari ~560,000+ sekolah di seluruh Indonesia
- Dual Source Data: Mengumpulkan data dari dua website resmi Kemendikbud
- Resume/Checkpoint System: Dapat melanjutkan proses scraping yang terinterupsi
- Progress Tracking: Menampilkan progress real-time dengan estimasi waktu
- Auto-Save: Menyimpan checkpoint setiap halaman dan backup setiap 100 halaman
- Excel Output: Hasil disimpan dalam format Excel (.xlsx) dengan dua sheet terpisah
- Error Handling: Robust error handling untuk koneksi tidak stabil
- NPSN (Nomor Pokok Sekolah Nasional)
- Nama Sekolah
- 8 Standar Nasional Pendidikan:
- Standar Isi
- Standar Proses
- Standar Kelulusan
- Standar Tenaga Pendidik
- Standar Sarana Prasarana
- Standar Pengelolaan
- Standar Pembiayaan
- Standar Penilaian
- Tahun Akreditasi
- Nilai Akhir
- Status Akreditasi (A/B/C/TT)
- Link Sertifikat Akreditasi
- Identitas: NPSN, Nama, Alamat Lengkap
- Lokasi: Desa/Kelurahan, Kecamatan, Kabupaten, Provinsi
- Status: Status Sekolah, Bentuk Pendidikan, Jenjang Pendidikan
- Kelembagaan: Kementerian Pembina, Naungan, NPYP
- Legalitas:
- No & Tanggal SK Pendirian
- No & Tanggal SK Operasional
- Link File SK Operasional
- Akreditasi: Status dan Link Sertifikat
- Fasilitas: Luas Tanah, Akses Internet, Sumber Listrik
- Kontak: Telepon, Fax, Email, Website
- Koordinat: Lintang dan Bujur (untuk mapping)
- Operator: Nama operator data sekolah
- Python 3.7 atau lebih tinggi
- Koneksi internet yang stabil
- Minimal 1GB ruang penyimpanan kosong
-
Clone repositori:
git clone https://github.com/zulfikriyahya/scraping-dikdasmen.git cd scraping-dikdasmen -
Buat virtual environment (opsional tapi direkomendasikan):
python3 -m venv venv source venv/bin/activate # Linux/Mac # atau venv\Scripts\activate # Windows
-
Instal dependensi:
pip install -r requirements.txt
requests>=2.28.0
beautifulsoup4>=4.11.0
pandas>=1.5.0
openpyxl>=3.0.10
python main.py-
Cek Checkpoint: Program akan mengecek apakah ada proses scraping sebelumnya yang terinterupsi
-
Resume atau Mulai Baru:
- Jika checkpoint ditemukan, Anda dapat memilih untuk melanjutkan atau mulai dari awal
- Jika tidak ada checkpoint, program akan mulai scraping baru
-
Konfirmasi: Program akan menampilkan informasi total sekolah dan estimasi waktu
-
Proses Scraping:
- Scraping berjalan otomatis dengan progress tracking
- Data disimpan setiap halaman selesai
- Backup dibuat setiap 100 halaman
-
Selesai: File Excel final akan disimpan dengan timestamp
======================================================================
SCRAPING SEMUA DATA SEKOLAH KEMENDIKDASMEN
======================================================================
Mengambil informasi total sekolah...
======================================================================
Total Sekolah : 560,228
Total Halaman : 140,057
Mulai dari : Halaman 1
Estimasi waktu : 467.0 jam
======================================================================
Tekan ENTER untuk mulai scraping...
======================================================================
HALAMAN 1/140,057 | Progress: 0.00%
======================================================================
[1/4] Sekolah #1/560,228
ETA: 466.9 jam | Kecepatan: 3600 sekolah/jam
https://sekolah.data.kemendikdasmen.go.id/index.php/Chome/profil/xxxxx
Akreditasi: 12345678 - SD NEGERI 1 JAKARTA
Referensi: SD NEGERI 1 JAKARTA
Checkpoint disimpan: Halaman 1, Sekolah 4/560,228
Scraper menyimpan progress secara otomatis dalam dua file:
scraper_checkpoint.json: Menyimpan halaman terakhir dan jumlah sekolah yang telah diprosestemp_data.json: Menyimpan data sementara yang telah di-scrape
-
Jalankan kembali program:
python main.py
-
Program akan mendeteksi checkpoint dan menampilkan:
CHECKPOINT DITEMUKAN! ====================================================================== Halaman terakhir : 50 Progress sekolah : 200/560,228 Persentase : 0.04% Waktu tersimpan : 2024-01-15 14:30:45 ====================================================================== Lanjutkan dari checkpoint? (y/n): -
Ketik
yuntuk melanjutkan ataununtuk mulai dari awal
- Tekan
Ctrl + Ckapan saja - Program akan menyimpan progress terakhir
- Data yang telah di-scrape akan tetap tersimpan
- Anda dapat melanjutkan nanti dari checkpoint
-
File Excel Utama:
data_sekolah_final_YYYYMMDD_HHMMSS.xlsx- Sheet 1: Data Akreditasi
- Sheet 2: Data Referensi
-
File Backup:
data_sekolah_backup_page_XXX.xlsx- Dibuat setiap 100 halaman
- Berguna jika proses terinterupsi
-
File Checkpoint:
scraper_checkpoint.json: Info progresstemp_data.json: Data sementara
Semua file disimpan di direktori yang sama dengan script Python.
-
Koneksi Internet:
- Pastikan koneksi stabil untuk hasil optimal
- Gunakan koneksi kabel jika memungkinkan
-
Waktu Eksekusi:
- Scraping penuh membutuhkan ~20 hari non-stop
- Gunakan fitur resume untuk scraping bertahap
- Pertimbangkan menjalankan di server atau VPS
-
Resource Management:
- Script menggunakan delay 1-1.5 detik antar request
- Tidak membebani server target
- Memory usage relatif rendah (~200MB)
-
Backup Data:
- File backup otomatis dibuat setiap 100 halaman
- Simpan file backup di lokasi terpisah untuk keamanan
# Jalankan kembali, program akan otomatis resume
python main.py
# Pilih 'y' saat ditanya untuk lanjutkan dari checkpoint- Cek koneksi internet
- Program akan otomatis retry
- Jika error berulang >10x, program akan berhenti otomatis
pip install -r requirements.txt- Pastikan tidak ada program lain yang membuka file
- Cek apakah Excel terbaru terinstal
- Gunakan LibreOffice jika Excel bermasalah
- Normal, estimasi 3600 sekolah/jam
- Delay sengaja ditambahkan untuk menghormati server
- Pertimbangkan running di server dengan koneksi lebih baik
-
Data Publik:
- Semua data yang di-scrape adalah data publik yang tersedia di website resmi Kemendikbud
- Gunakan data sesuai peraturan dan etika yang berlaku
-
Rate Limiting:
- Script menggunakan delay antar request untuk tidak membebani server
- Jangan modifikasi delay agar server tidak overload
-
Terms of Service:
- Pastikan scraping tidak melanggar ToS website
- Gunakan untuk keperluan riset, pendidikan, atau analisis data
-
Struktur HTML:
- Perubahan struktur website dapat mempengaruhi hasil scraping
- Update script jika terjadi perubahan struktur
-
Data Kosong:
- Beberapa sekolah mungkin tidak memiliki data lengkap
- Field kosong akan muncul sebagai string kosong di Excel
-
Waktu Eksekusi:
- Total waktu ~20 hari untuk scraping penuh
- Pertimbangkan scraping bertahap atau filter tertentu
- Jangan menjalankan multiple instances secara bersamaan
- Jangan mengurangi delay antar request
- Lakukan scraping di luar jam sibuk jika memungkinkan
- Gunakan data untuk keperluan positif dan legal
Kontribusi sangat diterima! Silakan:
- Fork repositori ini
- Buat branch baru (
git checkout -b feature/AmazingFeature) - Commit perubahan (
git commit -m 'Add some AmazingFeature') - Push ke branch (
git push origin feature/AmazingFeature) - Buat Pull Request
Proyek ini dibuat untuk keperluan edukasi dan riset. Pastikan penggunaan data sesuai dengan peraturan yang berlaku.
Jika ada pertanyaan atau masalah, silakan buat issue di GitHub repository atau hubungi maintainer.
- Data bersumber dari Kemendikbud Ristek
- Dapodik untuk sistem data pendidikan
Happy Scraping! Gunakan dengan Bijak!
