Proyek ini adalah notebook Jupyter yang digunakan untuk melakukan scraping data status kapasitas tiket masuk ke Gunung Bromo dan Semeru dari situs web resmi bromotenggersemeru.id. Script ini mengambil data kuota tiket untuk berbagai periode bulan dan tahun, kemudian menampilkannya dalam bentuk tabel menggunakan pandas.
- 🌐 Mengambil opsi bulan/tahun yang tersedia dari halaman utama.
- 🔄 Melakukan iterasi melalui setiap periode untuk mengambil data kapasitas tiket via AJAX POST request.
- 📊 Scraping data tabel yang berisi tanggal dan status kuota (misalnya "Kuota Penuh" atau status lainnya).
- 📈 Mengumpulkan semua data ke dalam DataFrame pandas untuk analisis atau penyimpanan lebih lanjut.
- 🐍 Python 3.x
- 📓 Jupyter Notebook
- 📚 Library yang diperlukan:
beautifulsoup4requestspandas
-
Pastikan Python dan Jupyter Notebook terinstal di sistem Anda.
-
Instal dependensi yang diperlukan dengan menjalankan perintah berikut di terminal atau dalam notebook:
%pip install beautifulsoup4 requests pandas
- Buka notebook
scraping_status_tiket_gunung_bromo&semeru.ipynbdi Jupyter Notebook. - Jalankan sel-sel secara berurutan:
- Sel pertama: Instal dependensi.
- Sel kedua: Mengatur URL target, headers, dan mengambil opsi bulan/tahun dari halaman awal.
- Sel ketiga: Iterasi melalui setiap bulan, membuat POST request ke endpoint AJAX, dan scraping data tabel.
- Sel keempat: Memproses dan menampilkan data yang dikumpulkan dalam DataFrame.
- Data akan ditampilkan di output notebook. Anda dapat menyimpannya ke file CSV atau melakukan analisis lebih lanjut jika diperlukan.
- Langkah 1: Mengambil HTML halaman awal untuk menemukan opsi
year_monthdari dropdown form. - Langkah 2: Ekstrak nilai-nilai opsi bulan/tahun.
- Langkah 3-4: Untuk setiap bulan, kirim POST request ke endpoint AJAX dengan payload yang sesuai, lalu parse HTML respons untuk mengambil data tabel (tanggal dan status).
- Langkah 5: Gabungkan semua data ke dalam DataFrame pandas dan tampilkan.
- Jika tidak ada data atau terjadi error, script akan memberikan pesan peringatan dan melanjutkan ke bulan berikutnya.
- Data ditampilkan dalam tabel dengan kolom:
Tanggal,Status,Periode. - Contoh status: "Kuota Penuh" (quota full), dll.
- Opsional: Analisis tambahan seperti jumlah hari kuota penuh per periode dapat ditambahkan.
- Script ini menggunakan headers untuk meniru permintaan browser. Jika situs web berubah, Anda mungkin perlu menyesuaikan headers atau payload.
- Pastikan untuk menghormati terms of service situs web dan tidak melakukan scraping berlebihan yang dapat membebani server.
- Untuk debugging, uncomment bagian print respons mentah jika diperlukan.
Proyek ini dilisensikan di bawah MIT License. Lihat file LICENSE untuk detail lebih lanjut.